Contest1632 – 计Z1501字符数组 – 参考代码

本C语言问题参考代码由 从安小哥 友情为计Z1501班级同学提供

如果觉得我的博客不错就推荐给同学吧!

如有疑问请直接留言

建议自己能看懂的修改代码再提交作业

IW8HY421HY1LKKU03)WO2VB
 
鼠标移至代码框右上角工具栏可以查看源代码,将不会出现代码框中的序号。
5.18-22:00:更新题目参考。
 

/*
语言基础练习——简单编码(循环)
题目描述
将一串文本译成密码,密码的规律是:
将原来的小写字母全部翻译成大写字母,大写字母全部翻译成小写字母,数字的翻译规律如下:
0——>9
1——>8
2——>7
3——>6
4——>5
5——>4
6——>3
7——>2
8——>1
9——>0
然后将所有字符的顺序颠倒。
输入
输入一串文本,最大字符个数不超过100。
输出
输出编码后的结果。
样例输入
china
样例输出
ANIHC
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
char ch[100];
int i;
gets(ch);
for(i=0;ch[i]!=’\0’;i++)
{
if(ch[i]>=’a’&&ch[i]<=’z’)
ch[i]-=32;
else if(ch[i]>=’A’&&ch[i]<=’Z’)
ch[i]+=32;
else if(ch[i]>=’0’&&ch[i]<=’9′)
ch[i]=105-ch[i];
}
for(i=i-1;i>=0;i–)
printf("%c",ch[i]);
return 0;
}
/*
语言基础练习——字符逆序(数组)
题目描述
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。
输入
输入包括一行。
第一行输入的字符串。
输出
输出转换好的逆序字符串。
样例输入
I am a student
样例输出
tneduts a ma I
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[100];
int i;
gets(ch);
for(i=strlen(ch)-1;i>=0;i–)
printf("%c",ch[i]);
return 0;
}
/*
语言基础练习——保留字母(数组 与 字符串)
题目描述
编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。
输入
一个字符串,长度不超过80个字符
输出
删掉非英文字母后的字符串。
样例输入
abc123+xyz.5
样例输出
abcxyz
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[80],str[80];
int i,j=0;
gets(ch);
for(i=0;i<strlen(ch);i++)
{
if(ch[i]>=’a’&&ch[i]<=’z’||ch[i]>=’A’&&ch[i]<=’Z’)
{
str[j]=ch[i];
j++;
}
str[j+1]=’\0’;
}
puts(str);
return 0;
}
/*
语言基础练习——大、小写问题(数组 和 字符串处理)
题目描述
输入一串字符,将其中的大写变成小写,若不为大写则原样输出
输入
任意字符串(长度在100以内)以回车表示输入结束
输出
将其中的大写 输出相应的小写,若不为大写则原样输出
样例输入
A123b
样例输出
a123b
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[100];
int i;
gets(ch);
for(i=0;i<strlen(ch);i++)
if(ch[i]>=’A’&&ch[i]<=’Z’)
ch[i]+=32;
for(i=0;i<strlen(ch);i++)
printf("%c",ch[i]);
return 0;
}
/*
语言基础练习——字符串正反连接(数组和字符串)
题目描述
所给字符串正序和反序连接,形成新串并输出
输入
任意字符串(长度<=50)
输出
字符串正序和反序连接所成的新字符串
样例输入
123abc
样例输出
123abccba321
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[50];
int i,j;
gets(ch);
for(i=j=strlen(ch)-1;i<=(strlen(ch)-1)*2;i–,j++)
ch[j+1]=ch[i];
ch[j+1]=’\0’;
for(i=0;i<strlen(ch);i++)
printf("%c",ch[i]);
return 0;
}
/*
语言基础练习——数字母(数组 与 字符串)
题目描述
输入一个字符串,数出其中的字母的个数.
输入
一个字符串,不包含空格(长度小于100)
输出
字符串中的字母的个数
样例输入
124lfdk54AIEJ92854&%$GJ
样例输出
10
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[80];
int i,j=0;
gets(ch);
for(i=0;i<strlen(ch);i++)
if(ch[i]>=’a’&&ch[i]<=’z’||ch[i]>=’A’&&ch[i]<=’Z’)
j++;
printf("%d",j);
return 0;
}
/*
字符数组——寻找字符串中空格的数目
题目描述
输入一行字符(字符串包括最后的’\0’的长度,最长不超过80字符),统计其中空格出现的次数,连续的空格作为一次空格出现计算。
输入
一串带空格的字符。
输出
连续字符串中空格出现的次数。
样例输入
Hello world! I come here.
样例输出
4
提示
注意:字符串首尾都可能出现空格
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[80];
int i,j=0;
gets(ch);
for(i=0;i<strlen(ch);i++)
{
if(ch[i]==’ ‘)
j++;
while(ch[i]==’ ‘)
i++;
}
printf("%d",j);
return 0;
}
/*
字符数组——寻找字符串中指定字符
题目描述
输入一行字符(字符串包括最后的’\0’的长度,最长不超过80字符),统计其中字母’a’和‘A’出现的次数,
输入
一串字符串
输出
字母A出现的次数,包括大写和小写
样例输入
Youth is not a time of life; it is a state of mind;
样例输出
3
提示
输入的字符串中可能有空格,需要用gets接口读取字符串
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[80];
int i,j=0;
gets(ch);
for(i=0;i<strlen(ch);i++)
if(ch[i]==’A’||ch[i]==’a’)
j++;
printf("%d",j);
return 0;
}
/*
字符数组——字符串中字母更替
题目描述
输入一行字符(字符串包括最后的’\0’的长度,最长不超过80字符),字符串中可能有空格。将字符串中所有的小写a改成大写A,将大写A改成小写a
输入
一串带空格的字符。
输出
原字符串中大写A和小写a互换
样例输入
aAAabb Aa
样例输出
AaaAbb aA
提示
字符串中可能有空格,所以用接口gets()读取字符串
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char ch[80];
int i;
gets(ch);
for(i=0;i<strlen(ch);i++)
{
if(ch[i]==’a’)
ch[i]=’A’;
else if(ch[i]==’A’)
ch[i]=’a’;
}
puts(ch);
return 0;
}

– – – – – – – – – – – – – – – – – – – – – 华丽的隐藏 暂不公布以下内容- – – – – – – – – – – – – – – – – – – – – –

/*
数据结构——数组元素存储位置(数组)
题目描述
假设一个10行10列的二维数组,下标从0开始,已知a00的地址和每个元素占用的存储单元,求顺序存储的 二维数组中任意元素aij在内存中的存储位置。
输入
输入包括两行
第一行有两个整数,第一个是元素a00的首地址,第二个为每个元素所占用的存储单元数
第二行也有两个数字,分别是aij的行下标和列下标
输出
输出包括两个数字,分别是列优先的数组元素aij的地址和行优先的数组元素aij的地址值,两个数中间用一个空格隔开,
样例输入
100 4
2 3
样例输出
228 192
*/
#include <stdio.h>
int main()
{
/*
*二维数组a[m][n],a[p][q]为a的第一个元素
*行下标从p到m+p,列下标从q到n+q
*loc1为列优先顺序”存储值,loc2为行优先顺序”存储值
*t为每个元素所占用的存储单元数
*/
int a,m=10,n=10,i,j,loc1,loc2,p=0,q=0,t;
scanf("%d%d%d%d",&a,&t,&i,&j);
loc1=a+((j-q)*n+(i-p))*t;
loc2=a+((i-p)*m+(j-q))*t;
printf("%d %d",loc1,loc2);
return 0;
}
/*
数据结构——从指定位置删除子符(串)
题目描述
从一个字符串中的第p个位置起删除指定长度的字符串,输出最终结果,若输入不合法,则输出 Illegal input
输入
输入一个字符串s、位置p、长度n
输出
删除子串后的字符串
样例输入
adfasdf12
6 5
样例输出
Illegal input
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int p,n,i,x;
char s[1000];
gets(s); //输入一个字符串s
scanf("%d %d",&p,&n); //输入位置p、长度n
if(strlen(s)>p+n) //判断输入是否合法
{
for(i=0;i<strlen(s);i++) //位移删除指定字符段
s[p+i-1]=s[p+n+i-1];
s[p+n+1]=’\0’;
puts(s);
}
else
printf("Illegal input");
return 0;
}
/*
数据结构——字符串替换(串)
题目描述
编写一个C程序实现将字符串中的所有"you"替换成"we"
输入
输入包含多行数据
每行数据是一个字符串,长度不超过1000
数据以EOF结束
输出
对于输入的每一行,输出替换后的字符串
样例输入
you are what you do
样例输出
we are what we do
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int j,i;
char str[1000];
do
{
gets(str);
for(i=0;i<strlen(str);i++)
{
if(str[i]==’y’&&str[i+1]==’o’&&str[i+2]==’u’) //判断是否为“you”字符串
{
str[i]=’w’;
str[i+1]=’e’;
for(j=i+2;j<strlen(str);j++) //替换字符串后进行位移
str[j]=str[j+1];
str[j]=’\0’;
i+=2;
}
}
puts(str);
}while((scanf("%s",str))!=EOF);
return 0;
}
/*
数据结构——判断是否是合法邮箱(串)
题目描述
输入一个字符串,判断是否是合法邮箱(格式正确即可,不管是否真的存在)输入的只能是字母、数字、下划线、@以及.五种, @前后只能是字母或者数字,而且.后只能是com, 是则输出YES ,否则输出NO
输入
一串字符
输出
判断结果
样例输入
adf12@qw213.com
样例输出
YES
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int j,i,x=0;
char str[1000];
gets(str);
for(i=0;i<strlen(str)&&str[i]!=’@’;i++);
if(str[i]==’@’&& //判断@和.com是否符合
str[strlen(str)-1]==’m’&&
str[strlen(str)-2]==’o’&&
str[strlen(str)-3]==’c’&&
str[strlen(str)-4]==’.’)
x=1;
if(x==1) //判断@前字符是否符合,符合则X=2
for(j=0;j<i;j++)
{
if(str[j]>=’a’&&str[j]<=’z’||
str[j]>=’A’&&str[j]<=’Z’||
str[j]>=’0’&&str[j]<=’9′)
x=2;
else
{
x=0;
break;
}
}
if(x==2) //判断@后字符是否符合,符合则X=3
for(j=i+1;j<strlen(str)-4;j++)
{
if(str[j]>=’a’&&str[j]<=’z’||
str[j]>=’A’&&str[j]<=’Z’||
str[j]>=’0’&&str[j]<=’9′)
x=3;
else
{
x=0;
break;
}
}
if(x==3)
printf("YES");
else
printf("NO");
return 0;
}

C语言ACM竞赛练习题参考代码 第一期 1000 – 1010 长期更新

C语言ACM竞赛练习题参考代码由从安小哥友情提供

如果觉得我的博客不错就推荐给同学吧!

如有疑问请直接留言

建议自己能看懂的重写更精炼的代码再提交作业

IW8HY421HY1LKKU03)WO2VB
 
鼠标移至代码框右上角工具栏可以查看源代码,将不会出现代码框中的序号。
5.5-9:00:更新题目参考。
 

/*编号1000 A+B for Input-Output Practice (I)
题目描述
Your task is to Calculate a + b.
Too easy?! Of course! I specially designed the problem for acm beginners.
You must have found that some problems have the same titles with this one, yes, all these problems were designed for the same aim.
输入
The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.
输出
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
样例输入
1 5
10 20
样例输出
6 30
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int a,b;
for(;scanf("%d %d",&a,&b)!=EOF;)
printf("%dn",a+b);
return 0;
}
/*编号1001 A+B for Input-Output Practice (II)
题目描述
Your task is to Calculate a + b。
输入
Input contains an integer N in the first line, and then N lines follow. Each line consists of a pair of integers a and b, separated by a space, one pair of integers per line.
输出
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
样例输入
2
1 5
10 20
样例输出
6 30
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int a,b,n;
scanf("%d",&n);
for(;n>0;n–)
{
scanf("%d%d",&a,&b);
printf("%dn",a+b);
}
return 0;
}
/*编号1002 A+B for Input-Output Practice (III)
题目描述
Your task is to Calculate a + b.
输入
Input contains multiple test cases. Each test case contains a pair of integers a and b, one pair of integers per line. A test case containing 0 0 terminates the input and this test case is not to be processed.
输出
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
样例输入
1 5
10 20
0 0
样例输出
6 30
*/
#include<stdio.h>
int main()
{
int a,b;
for(;scanf("%d %d",&a,&b)!=EOF;)
{
if(a==0&&b==0)
break;
printf("%dn",a+b);
}
return 0;
}
/*编号1003 A+B for Input-Output Practice (IV)
题目描述
Your task is to Calculate the sum of some integers.
输入
Input contains multiple test cases. Each test case contains a integer N, and then N integers follow in the same line. A test case starting with 0 terminates the input and this test case is not to be processed.
输出
For each group of input integers you should output their sum in one line, and with one line of output for each line in input.
样例输入
4 1 2 3 4
5 1 2 3 4 5
样例输出
10 15
*/
#include<stdio.h>
int main()
{
int n,a,i,sum;
while(scanf("%d",&n) && (n!=0) )
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a);
sum+=a;
}
printf("%dn",sum);
}
return 0;
}
/*编号1004 A+B for Input-Output Practice (V)
题目描述
Your task is to calculate the sum of some integers.
输入
Input contains an integer N in the first line, and then N lines follow. Each line starts with a integer M, and then M integers follow in the same line.
输出
For each group of input integers you should output their sum in one line, and with one line of output for each line in input.
样例输入
2 4 1 2 3 4
5 1 2 3 4 5
样例输出
10 15
*/
#include<stdio.h>
int main()
{
int n,a,i,sum,N;
scanf("%d",&N);
for(;N>0;N–)
{ scanf("%d",&n);
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a);
sum+=a;
}
printf("%dn",sum);
}
return 0;
}
/*编号1005 A+B for Input-Output Practice (VI)
题目描述
Your task is to calculate the sum of some integers.
输入
Input contains multiple test cases, and one case one line. Each case starts with an integer N, and then N integers follow in the same line.
输出
For each test case you should output the sum of N integers in one line, and with one line of output for each line in input.
样例输入
4 1 2 3 4
5 1 2 3 4 5
样例输出
10 15
*/
#include<stdio.h>
int main()
{
int n,a,i,sum;
while(scanf("%d",&n)!=EOF)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a);
sum+=a;
}
printf("%dn",sum);
}
return 0;
}
/*编号1007 A+B for Input-Output Practice (VIII)
题目描述
Your task is to calculate the sum of some integers.
输入
Input contains an integer N in the first line, and then N lines follow. Each line starts with a integer M, and then M integers follow in the same line.
输出
For each group of input integers you should output their sum in one line, and you must note that there is a blank line between outputs.
样例输入
3 4 1 2 3 4 5 1 2 3 4 5 3 1 2 3
样例输出
10 15 6
*/
#include<stdio.h>
int main()
{
int n,a,i,sum,na;
scanf("%d",&na);
while(na>0&&scanf("%d",&n)!=EOF)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a);
sum+=a;
}
printf("%dnn",sum);
na–;
}
return 0;
}
/*编号1008 字符串的输入输出处理
题目描述
字符串的输入输出处理。
输入
第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。
输出
先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。
样例输入
2
www.njupt.edu.cn NUPT
A C M
N U P Ter
样例输出
www.njupt.edu.cn
NUPT
A C M
N
U
P
Ter
*/
//方法1
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,n,m,j,t=0;
char str[1000];
scanf("%d",&n); //输入原样输出行数
getchar();
while(gets(str)) //输入字符串
{
if(n>0) //判断是否原样输出
{
puts(str); //原样输出字符串
printf("n");
for(i=0;str[i]!=’\0’;i++)
str[i]=’\0’;
}
else //输出规定的格式
{
if(t!=0) printf("n");
t++;
for(m=0;str[m]!=’\0’;m++); //读取STR字符串的长度M
for(i=0;i<m;i++)
{
if(‘ ‘==str[i]||’n’==str[i]) //以空格或回车分割字符串
{
for(m=0;str[m]!=’\0’;m++); //读取STR字符串变化后的长度M
str[i]=’n’; //插入n后向后位移
for(j=0;j<m-i;j++)
str[m-j]=str[m-j-1];
str[i+1]=’n’;
i+=2;
}
}
puts(str); //输出字符串数组所有内容
}
n–;
}
return 0;
}
//方法2
#include <stdio.h>
int main()
{
int n,i;
char str[1000];
scanf("%d",&n);
gets(str);
gets(str);
printf("%sn",str);
printf("n");
for(i = 1;i < n;i++)
{
gets(str);
printf("%sn",str);
printf("n");
}
while(scanf("%s",&str)!=EOF)
{
printf("%sn",str);
printf("n");
}
return 0;
}
/*编号1009 Balloon Comes! (混合数据处理)
题目描述
The contest starts now! How excited it is to see balloons floating around. You, one of the best programmers in HDU, can get a very beautiful balloon if only you have solved the very very very… easy problem.
Give you an operator (+,-,*, / –denoting addition, subtraction, multiplication, division respectively) and two positive integers, your task is to output the result.
Is it very easy?
Come on, guy! PLMM will send you a beautiful Balloon right now!
Good Luck!
输入
Input contains multiple test cases. The first line of the input is a single integer T (0<T<1000) which is the number of test cases. T test cases follow. Each test case contains a char C (+,-,*, /) and two integers A and B(0<A,B<10000).Of course, we all know that A and B are operands and C is an operator.
输出
For each case, print the operation result. The result should be rounded to 2 decimal places If and only if it is not an integer.
样例输入
4
+ 1 2
– 1 2
* 1 2
/ 1 2
样例输出
3
-1
2
0.50
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,a,b;
char input;
scanf("%d",&n);
for(;n>0;n–)
{
getchar();
scanf("%c%d%d",&input,&a,&b);
switch(input){
case ‘+’:printf("%dn",a+b);break;
case ‘-‘:printf("%dn",a-b);break;
case ‘*’:printf("%dn",a*b);break;
case ‘/’:if(a%b==0) printf("%dn",a/b); else printf("%.2fn",(float)a/b);break;
}
}
return 0;
}
/*编号1010 简单的四则运算(ACM输入输出练习)
题目描述
编写一个程序,要求用户输入两个整数,输出这两个数的和、乘积、差和商。
输入
输入第一行有一个整数n,表示下面有n组数据。下面的n行,每行包括用空格隔开的两个int类型整数。
输出
输出n行,每行四个整数,分别为相应两个输入数的和、乘积、差和商(商若不是整数则保留2位小数),用空格隔开。输出结果不超过32位有符号整数范围。
样例输入
3
24 3
1 1
4 3
样例输出
27 72 21 8
2 1 0 1
7 12 1 1.33
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,a,b;
for(scanf("%d",&n);n>0;n–)
{
scanf("%d%d",&a,&b);
printf("%d %d %d ",a+b,a*b,a-b);
if(a%b==0)
printf("%dn",a/b);
else printf("%.2fn",(float)a/b);
}
return 0;
}

第二期代码入口:http://www.blacknet.cn/?p=153

Contest1626 – 计Z1501简单一维数组题目 – 参考代码

本C语言问题参考代码由 从安小哥 友情为计Z1501班级同学提供

如果觉得我的博客不错就推荐给同学吧!

如有疑问请直接留言

建议自己能看懂的修改代码再提交作业

IW8HY421HY1LKKU03)WO2VB
 
鼠标移至代码框右上角工具栏可以查看源代码,将不会出现代码框中的序号。
5.5-9:00:更新题目参考。
 

/* 1080 Problem A 语言基础练习——数字逆序输出(数组、循环)
题目描述
输入10个数字,然后逆序输出。
输入
十个整数
输出
逆序输出,空格分开
样例输入
1 2 3 4 5 6 7 8 9 0
样例输出
0 9 8 7 6 5 4 3 2 1
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int x[10],i;
for(i=0;i<10;i++) scanf("%d",&x[i]);
for(i=9;i>=0;i–) printf("%d ",x[i]);
return 0;
}
/* 1076 Problem B 语言基础练习——Fibonacci数列(数组)
题目描述
Fibonacci(1175?~1250?)是中世纪最杰出的数学家。
他原名Leonardo of Pisa,后以波那契之子而闻名。他于1175年出生于比萨,父亲是个商人,很早就激发了这个小孩对算术的兴趣。他们旅行到西西里,埃及和叙利亚,实际上接触到阿拉伯的数学历练。 Fibonacci很快就发现了十进制数系统的好处,在数字及计算上比当时通行的但十分笨拙的罗马数字系统优越得太多。1202年,他回到家乡,发表了著名的《算盘书》,将阿拉伯数字系统引进欧洲,立刻大受欢迎,并且很快地流传开来,不久便取代了罗马数系。
这本书共十五章,包括了阿拉伯数字的写法与读法,整数及分数的计算,平方根与立方根的计算,用试位法及代表解法解线性及二次方程等等。书中包含了许多问题,其中又以「兔子问题」最为有名:
一对兔子,每月生一对小兔子,新生的小兔子过了两个月以后又开始生小兔子,问:一对兔子一年能繁殖多少兔子?
根据题意,以Fn表示个月以后兔子的总对数,则F1=1,F2=1,F3=2,F4=3,F5=5,F6=8,F7=13,F8=21,…,这个数列就叫作Fibonacci数列(或称费氏数列),引起了后世源源不断的兴趣。
输入
输入多行,每行包括一个1~30范围内的数n,最后一行以0结束。
输出
按行输出Fibonacci数列中的第n个数。参见Sample
样例输入
3
4
5
8
样例输出
2
3
5
21
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,f[30],i;
f[0]=f[1]=1;
for(i=2;i<30;i++)
f[i]=f[i-1]+f[i-2];
for(;;)
{
scanf("%d",&n);
if(n==0)
break;
printf("%dn",f[n-1]);
}
return 0;
}
/* 1061 Problem C 语言基础练习——最值(数组)
题目描述
有一个长度为n的整数序列。请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。
输入
输入包括两行。
第一行为正整数n(1≤n≤10)。
第二行为n个正整数组成的序列。
输出
输出转换好的序列。数据之间用空格隔开。
样例输入
5
2 1 5 4 3
样例输出
1 2 3 4 5
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int x[10],i,n,m,s;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
for(i=0,m=x[0];i<n;i++)
{if(m<x[i])
m=x[i];}
for(i=0;m!=x[i];)
i++;
x[i]=x[n-1];
x[n-1]=m;
for(i=0,m=x[n-1];i<n;i++)
{if(m>x[i])
m=x[i];}
for(i=0;m!=x[i];)
i++;
x[i]=x[0];
x[0]=m;
for(i=0;i<n-1;i++)
printf("%d ",x[i]);
printf("%d",x[n-1]);
return 0;
}
/* 1066 Problem D 语言基础练习——逆序重放(数组)
题目描述
将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。
输入
先输入n (2<=n<=100),表示一维数组的大小。
再输入数组n个元素的值。(假设为整型数)
输出
输出逆序值。
样例输入
5
1 2 3 4 5
样例输出
5 4 3 2 1
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int x[100],i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
for(i=n-1;i>0;i–)
printf("%d ",x[i]);
printf("%d",x[0]);
return 0;
}
/* 1071 Problem E 语言基础练习——数据插入(数组)
题目描述
有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。
输入
先输入n (2<=n<=10),表示一维数组的大小。
按从小到大输入数组n个元素的值。(假设为整型数)
再输入要插入的值
输出
输出插完数后的数组值。输出在一行内(以空格分隔每个数)
样例输入
5
1 3 5 7 9
6
样例输出
1 3 5 6 7 9
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n[10],i,x,m,j;
scanf("%d",&j);
for(i=0;i<j;i++)
scanf("%d",&n[i]);
scanf("%d",&x);
for(i=0;i<j;i++)
if(x<n[i]) break;
for(m=0;m<j-i;m++)
n[j-m]=n[j-1-m];
n[i]=x;
for(i=0;i<j;i++)
printf("%d ",n[i]);
printf("%d",n[j]);
return 0;
}
/* 1077 Problem F 语言基础练习——数组逆序(数组)
题目描述
有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m<n<100)个位置。
输入
输入数据有2行,第一行的第一个数为n,后面是n个整数,
第二行整数m。
输出
按先后顺序输出n个整数。
样例输入
5 1 2 3 4 5
2
样例输出
4 5 1 2 3
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int x[100],n,m,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
scanf("%d",&m);
for(i=n-1;i>=0;i–)
x[i+m]=x[i];
for(i=0,j=n;j<n+m;i++,j++)
x[i]=x[j];
for(i=0;i<n;i++)
printf("%d ",x[i]);
return 0;
}
/* 1079 Problem G 语言基础练习——数字插入(数组)
题目描述
已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
输入
第一行,原始数列。第二行,需要插入的数字。
输出
排序后的数列
样例输入
1 7 8 17 23 24 59 62 101
50
样例输出
1
7
8
17
23
24
50
59
62
101
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n[10],i,x,m;
for(i=0;i<9;i++)
scanf("%d",&n[i]);
scanf("%d",&x);
if(n[0]<n[1]) //判断顺序
{
for(i=0;i<9;i++) //判断插入位置
if(x<n[i]) break;
for(m=0;m<9-i;m++) //插入位置数序向后移位
n[9-m]=n[8-m];
n[i]=x; //插入数值x
}
else
{
for(i=0;i<9;i++)
if(x>n[i]) break;
for(m=0;m<9-i;m++)
n[9-m]=n[8-m];
n[i]=x;
}
for(i=0;i<10;i++)
printf("%dn",n[i]);
return 0;
}
/* 2488 Problem H 一维数组——从数组中找出最大数
题目描述
编写程序,以数组方式保存,从控制台输入10个整数,找出其中最大者并输出。
输入
第一行是输入的数据组数,
之后是N行的数据,每行都包括10个整数
输出
每组数据都输出其中最大的整数,输出的每组最大数用空格隔开
样例输入
2
1 2 3 4 5 6 7 8 9 0
20 30 40 50 60 70 10 0 15 5
样例输出
9 70
提示
提示:参照题1001的数据输入和结果输出方法。
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,o,n,x[10],y[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(o=0;o<10;o++)
scanf("%d",&x[o]);
for(o=0,y[i]=x[0];o<10;o++)
{if(y[i]<x[o])
y[i]=x[o];}
}
for(i=0;i<n-1;i++)
printf("%d ",y[i]);
printf("%d",y[n-1]);
return 0;
}
/* 2489 Problem I 一维数组——数组中比数组下标为0的数组成员值大的个数
题目描述
编写程序,从控制台读入6个数字(输入时候各个数字用空格隔开),判断后5个数字中比第1个数大的数字有几个?
输入
第一行是输入的数据组数,
之后是N行的数据,每行都包括6个数
输出
每组数据都输出符合题目要求的数目
每组数据输出用空格隔开
样例输入
3
0 1 2.2 3 4 5.1
11.1 10 9 8.1 7 6
25 23.3 24 25 26 27
样例输出
5 0 2
提示
提示:1,参照题1001的数据输入和结果输出方法;2,数据有带小数点,定义的数组用float或double。
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
float x[6];
int i,o,n,y[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(o=0;o<6;o++)
scanf("%f",&x[o]);
for(o=1,y[i]=0;o<6;o++)
if(x[o]>x[0])
y[i]+=1;
}
for(i=0;i<n-1;i++)
printf("%d ",y[i]);
printf("%d",y[n-1]);
return 0;
}
/* 2490 Problem J 一维数组——从数组中找出素数
题目描述
编写程序,以数组方式保存,从控制台输入10个数字,输出是素数的数字。
输入
第一行是输入的数据组数,
之后是N行的数据,每行都包括10个整数
输出
每组数据都输出其中的素数,输出素数用空格隔开
每一组素数输出各占一行。如果该组数据中没有素数,则对应行输出"no"。
样例输入
3
1 2 3 4 5 6 7 8 9 0
4 6 8 10 12 14 16 18 20 22
10 11 12 13 14 15 16 17 18 19
样例输出
2 3 5 7
no
11 13 17 19
提示
提示:参照题1001的数据输入和结果输出方法。
素数又称质数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
如:由2÷1=2,2÷2=1,可知2的因数只有1和它本身2这两个约数,所以2就是素数。
如:4÷1=4,4÷2=2,4÷4=1,很显然,4的因数除了1和它本身4这两个因数以外,还有因数2,所以4不是素数。
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int x[10],i,n,m,o,j;
scanf("%d",&n);
for(i=0;i<n;i++) //循环行数
{
o=0;
for(j=0;j<10;j++) //循环输入
scanf("%d",&x[j]);
for(j=0;j<10;j++) //外循环,10个数依次找素数
{
for(m=2;m<=x[j]-1;m++) //判断是否素数
if(x[j]%m==0) break;
if(m>=x[j]&&x[j]>1)
{x[o]=x[j];o++;}
}
if(o>0)
{
for(j=0;j<o-1;j++) //遍历循环数组x[j]
printf("%d ",x[j]);
printf("%dn",x[j]);
}
else printf("non");
}
return 0;
}
/*
语言基础练习——排序(数组、好题)
题目描述
输入10个整数,将它们从小到大排序后输出,并给出现每个元素在原来序列中的位置。
输入
输入数据有一行,包含10个整数,用空格分开。
输出
输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。
样例输入
1 2 3 5 4 6 8 9 10 7
样例输出
1 2 3 4 5 6 7 8 9 10
1 2 3 5 4 6 10 7 8 9
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int _scanf[10],i,j,temp=0,position[10]={1,2,3,4,5,6,7,8,9,10};
for(i=0;i<10;i++)
scanf("%d",&_scanf[i]);
for(j=0;j<10;j++) //外循环选择比大小
{
for(i=j+1;i<10;i++) //在剩下的数中比较
if(_scanf[i]<_scanf[j])
{
temp=_scanf[j];_scanf[j]=_scanf[i];_scanf[i]=temp; //比较大小交换位置
temp=position[j];position[j]=position[i];position[i]=temp; //数的位置序号同步交换
}
}
for(i=0;i<9;i++)
printf("%d ",_scanf[i]);
printf("%d",_scanf[i]);
printf("n");
for(i=0;i<9;i++)
printf("%d ",position[i]);
printf("%d",position[i]);
return 0;
}
/*
排序问题(冒泡排序:双重循环)
题目描述
将十个数进行从大到小的顺序进行排列
输入
十个整数
输出
以从大到小的顺序输出这个十个数
样例输入
1 2 3 4 5 6 7 8 9 10
样例输出
10 9 8 7 6 5 4 3 2 1
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int _scanf[10],i,j,temp=0;
for(i=0;i<10;i++)
scanf("%d",&_scanf[i]);
for(j=0;j<10;j++) //外循环选择比大小
{
for(i=j+1;i<10;i++) //在剩下的数中比较
if(_scanf[i]>_scanf[j])
{
temp=_scanf[j];_scanf[j]=_scanf[i];_scanf[i]=temp; //比较大小交换位置
}
}
for(i=0;i<9;i++)
printf("%d ",_scanf[i]);
printf("%d",_scanf[i]);
return 0;
}
/*
语言基础练习——多组数字排序(循环)
题目描述
给定m组n个正整数,将每一组数字从小到大进行排序。
输入
输入数据有多组,每组数据占一行,每行的第一个数正整数n(1<=n<=20),表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。
输出
输出每组排序的结果。
样例输入
2 1 2
3 121 10 111
样例输出
1 2
10 111 121
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j,temp,n,_scanf[1000];
while(scanf("%d",&n)&&(n!=0)) //判断输入n=0时结束程序
{
for(i=0;i<n;i++)
scanf("%d",&_scanf[i]);
for(j=0;j<n;j++) //外循环选择比大小
{
for(i=j+1;i<n;i++) //在剩下的数中比较
if(_scanf[i]<_scanf[j])
{
temp=_scanf[j];_scanf[j]=_scanf[i];_scanf[i]=temp; //比较大小交换位置
}
}
for(i=0;i<n-1;i++)
printf("%d ",_scanf[i]);
printf("%dn",_scanf[i]);
}
return 0;
}
/*
一维数组——整数从小到大排序
题目描述
编程,从控制台读入8个整数,保存在数组中,按照从小到大的顺序进行排序。输出排序后的数组。
输入
8个整数
输出
按照从小到大排列的这8个整数.每个数之间空一格空格。
样例输入
8 5 2 1 3 4 6 7
样例输出
1 2 3 4 5 6 7 8
提示
三种排序法任选。数组定义成整数类型。
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j,temp,_scanf[8];
for(i=0;i<8;i++)
scanf("%d",&_scanf[i]);
for(j=0;j<8;j++) //外循环选择比大小
{
for(i=j+1;i<8;i++) //在剩下的数中比较
if(_scanf[i]<_scanf[j])
{
temp=_scanf[j];_scanf[j]=_scanf[i];_scanf[i]=temp; //比较大小交换位置
}
}
for(i=0;i<7;i++)
printf("%d ",_scanf[i]);
printf("%d",_scanf[i]);
return 0;
}
/*
一维数组——整数从大到小排序
题目描述
编程,从控制台读入8个整数,保存在数组中,按照从大到小的顺序进行排序。输出排序后的数组。
输入
8个整数
输出
按照从大到小排列的这8个整数.每个数之间空一格空格。
样例输入
8 5 2 1 3 4 6 7
样例输出
8 7 6 5 4 3 2 1
提示
三种排序法任选。数组定义成整数类型。
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j,temp,_scanf[8];
for(i=0;i<8;i++)
scanf("%d",&_scanf[i]);
for(j=0;j<8;j++) //外循环选择比大小
{
for(i=j+1;i<8;i++) //在剩下的数中比较
if(_scanf[i]>_scanf[j])
{
temp=_scanf[j];_scanf[j]=_scanf[i];_scanf[i]=temp; //比较大小交换位置
}
}
for(i=0;i<7;i++)
printf("%d ",_scanf[i]);
printf("%d",_scanf[i]);
return 0;
}
/*
一维数组——实数从小到大排序
题目描述
编程,从控制台读入8个实数,保存在数组(数组类型用float)中,按照从小到大的顺序进行排序。输出排序后的数组。
输入
8个实数
输出
按照从小到大排列的这8个数.每个数之间空一格空格。每个数输出时保留小数点 后2位。
样例输入
8.0 5.0 2.0 1.0 3.0 4.0 6.0 7.0
样例输出
1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00
提示
三种排序法任选。数组定义成float类型。
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j;
float temp,_scanf[8];
for(i=0;i<8;i++)
scanf("%f",&_scanf[i]);
for(j=0;j<8;j++) //外循环选择比大小
{
for(i=j+1;i<8;i++) //在剩下的数中比较
if(_scanf[i]<_scanf[j])
{
temp=_scanf[j];_scanf[j]=_scanf[i];_scanf[i]=temp; //比较大小交换位置
}
}
for(i=0;i<7;i++)
printf("%.2f ",_scanf[i]);
printf("%.2f",_scanf[i]);
return 0;
}
/*
一维数组——实数从大到小排序
题目描述
编程,从控制台读入8个实数,保存在数组(数组类型用float)中,按照从大到小的顺序进行排序。输出排序后的数组。
输入
8个实数
输出
按照从大到小排列的这8个数.每个数之间空一格空格。每个数输出时保留小数点 后2位。
样例输入
8.0 5.0 2.0 1.0 3.0 4.0 6.0 7.0
样例输出
8.00 7.00 6.00 5.00 4.00 3.00 2.00 1.00
提示
三种排序法任选。数组定义成float类型。
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j;
float temp,_scanf[8];
for(i=0;i<8;i++)
scanf("%f",&_scanf[i]);
for(j=0;j<8;j++) //外循环选择比大小
{
for(i=j+1;i<8;i++) //在剩下的数中比较
if(_scanf[i]>_scanf[j])
{
temp=_scanf[j];_scanf[j]=_scanf[i];_scanf[i]=temp; //比较大小交换位置
}
}
for(i=0;i<7;i++)
printf("%.2f ",_scanf[i]);
printf("%.2f",_scanf[i]);
return 0;
}
/*
一维数组——2个整数数组合并排序
题目描述
编写程序,从控制台读入2组,每组各5个整数,每组数中的数都是按照从小到大排列的,将这2组数合并成一个10长度的数组,该数组中数据从小到大排列。
输入
两组整数,每组5个数字,每组数字都是从小到大有序排列的
输出
将这10个数字按照从小大的顺序输出。每个数用空格隔开。
样例输入
1 3 5 7 9
2 4 6 8 10
样例输出
1 2 3 4 5 6 7 8 9 10
提示
似乎还是一个长度为10的数组的排序处理。
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int input_1[5],input_2[5],output[10],i1,i2,out;
for(i1=0;i1<5;i1++) // 输入2行数组
scanf("%d",&input_1[i1]);
for(i2=0;i2<5;i2++)
scanf("%d",&input_2[i2]);
for(i1=0,i2=0,out=0;i1<5&&i2<5;out++) //使用规比比较大小
{
if(input_1[i1]<input_2[i2]) //比值把小的存入 output数组
{
output[out]=input_1[i1];
i1++;
}
else
{
output[out]=input_2[i2];
i2++;
}
}
for(;i1>4&&i2<5;out++,i2++) //如有未存入output数组的值,则存入
output[out]=input_2[i2];
for(;i2>4&&i1<5;out++,i1++)
output[out]=input_1[i1];
for(out=0;out<9;out++)
printf("%d ",output[out]);
printf("%d",output[out]);
return 0;
}

Contest1624 – 计Z1501双重循环 – 参考代码

本C语言问题参考代码由 从安小哥 友情为计Z1501班级同学提供

如果觉得我的博客不错就推荐给同学吧!

如有疑问请联系邮箱black-net@foxmail.com.

建议自己能看懂的修改代码再提交作业

IW8HY421HY1LKKU03)WO2VB
 
鼠标移至代码框右上角工具栏可以查看源代码,将不会出现代码框中的序号。
4.28-10:15:更新题目参考。
 

//语言基础练习——图案输出2(双重for循环、经典)
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i,sum,x,q;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=n-i;
for(x=1;x<=sum;x++)
printf(" ");
for(q=0;q!=n;q++)
printf("*");
printf("n");
}
return 0;
}
//循环语句——判断一个数是否是素数
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i;
scanf("%d",&n);
for(i=2;i<=n-1;i++)
if(n%i==0)
break;
if(i>=n)
printf("y");
else
printf("n");
return 0;
}
//语言基础练习——图案输出0(双重for循环、经典)
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i,x;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(x=1;x<=i;x++)
printf("*");
printf("n");
}
return 0;
}
//语言基础练习——图案输出1(双重for循环、经典)
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i,sum,x,q,i1=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=n-i;
for(x=1;x<=sum;x++)
printf(" ");
for(q=1;q<=i1;q++)
{
printf("*");
}
q=1;
i1=i1+2;
printf("n");
}
return 0;
}
//循环嵌套——打印图形2
#include <stdio.h>
int main(int argc, char *argv[])
{
int n=5,i,x;
for(i=1;i<=n;i++)
{
for(x=1;x<i;x++)
printf("%d ",x);
printf("%d",x);
printf("n");
}
return 0;
}
//循环嵌套——打印翻转的九九乘法表
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j;
for(i=9;i>=1;i–)
{
for(j=i;j>=1;j–)
if(j!=1)
printf("%d*%d=%-2d",j,i,i*j);
else
printf("%d*%d=%d",j,i,i*j);
printf("n");
}
}
//语言基础练习——列出最简真分数序列(双重循环)
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,n,num1,num2,sum;
scanf("%d",&n);
for(i=1;i<=n;i++) /*穷举n以内的全部分子*/
{
num1=n;
num2=i;
for(;num2!=0;) /*采用辗转相除法求出最大公约数*/
{
sum=num1%num2;
num1=num2;
num2=sum;
}
if(num1==1) /*若最大公约数为1,则为最简真分数*/
printf("%d/%d,",i,n);
}
}
//语言基础练习——打印金字塔(双重循环)
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i,sum,x,q,p;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
if(i==1)
sum=n+n-2;
else
sum-=2;
for(x=1;x<=sum;x++)
printf(" ");
for(q=1;q<i;q++)
printf("%d ",q);
for(;q>1;q–)
printf("%d ",q);
printf("1n");
}
return 0;
}
//语言基础练习——图案输出(双重循环,经典)
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i,sum,x,q,p=1;
scanf("%d",&n);
sum=n/2;
for(i=1;i<=n/2+1;i++)
{
for(x=sum;x>=1;x–)
printf(" ");
printf("*");
if(i>=2)
{
for(q=1;q<=p;q++)
printf(" ");
printf("*");
p=p+2;
}
printf("n");
sum-=1;
}
for(i=n/2+1,sum=1;i<n;i++,sum++)
{
p=q;
for(x=1;x<=sum;x++)
printf(" ");
printf("*");
for(;q>3;q–)
printf(" ");
if(i!=n-1)
printf("*");
printf("n");
q=p-2;
}
return 0;
}

Contest1622 – 计Z1501循环练习 代码参考

本C语言问题参考代码由 从安小哥 友情为计Z1501班级同学提供

如果觉得我的博客不错就推荐给同学吧!

如有疑问请联系邮箱black-net@foxmail.com.

IW8HY421HY1LKKU03)WO2VB
 
鼠标移至代码框右上角工具栏可以查看源代码,将不会出现代码框中的序号。
4.21-9:15:更新题目参考。
 

//循环语句——用while求1~100的累计和
#include <stdio.h>
int main()
{
int i=1,sum=0;
while (i<=100)
{ sum=sum+i;
i++;
}
printf("%d",sum);
return 0;
}
//循环语句——用do…while求1~100的累计和
#include <stdio.h>
int main()
{ int i=1,sum=0;
do
{
sum=sum+i;
i++;
}while(i<=100);
printf("%d",sum);
return 0;
}
//循环语句——求1~n的累计和
#include <stdio.h>
int main(int argc, char *argv[])
{
int n;
int i,sum=0;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
sum=sum+i;
}
printf("%d",sum);
}
//语言基础练习——计算1~n之间所有奇数之和(简单for循环)
#include <stdio.h>
int main(int argc, char *argv[])
{
int sum = 0;
int n,i;
scanf("%d",&n);
for(i=0;i<=n;i++){
if(i%2==1){
sum+=i;
}
}
printf("%d",sum);
return 0;
}
//1~200特殊累计和
#include <stdio.h>
int main(int argc, char *argv[])
{
int sum=0;
int i;
for (i=1;i<=200;i++)
{
if(i%7!=0)
sum+=i;
}
printf("%d",sum);
return 0;
}
//循环语句——求Fibonacci数列的前40个数之和(for)
#include <stdio.h>
int main(int argc, char *argv[])
{
int f[40],n,x=2;
f[1]=1;
f[2]=1;
for(n=3;n<=40;n++)
{
f[n]=f[n-1]+f[n-2];
x=f[n]+x;
}
printf("%d",x);
return 0;
}
//语言基础练习——计算一个整数N的阶乘(循环或递归)
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,x,nx=1;
scanf("%d",&n);
for(x=1;x<=n;x++)
{
nx=x*nx;
}
printf("%d",nx);
return 0;
}
//语言基础练习——计算表达式(循环)
#include <stdio.h>
#include<math.h>
int main(int argc, char *argv[])
{
double x;
int n,i;
scanf("%lf%d",&x,&n);
for(i=1;i<=n;i++)
{
x=sqrt(i+x);
}
printf("%.2lf",x);
return 0;
}
//语言基础练习——立方和不等式(简单循环)
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,m,s;
scanf("%d",&n);
s=0;
for(m=1;;m++)
{
s+=m*m*m;
if(s>n)
{
m–;
break;
}
}
printf("%d",m);
return 0;
}
//语言基础练习——最大数问题(简单循环)
#include <stdio.h>
int main(int argc, char *argv[])
{
int x=0,max=0;
scanf("%d",&x);
max=x;
while(x!=-1)
{
if(x>max)
{
max=x;
}
scanf("%d", &x);
}
printf("%d",max);
return 0;
}
//语言基础练习——两个数比较(简单分支和循环)
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,a,b;
scanf("%d",&n);
for(;n>=1;n–)
{
scanf("%d%d",&a,&b);
if(a>=b)
printf("%dn",a);
else
printf("%dn",b);
}
}
//辅助语句——补充程序缺失代码,判断特殊字符
#include <stdio.h>
int main()
{
char input;
int n = 0;
for(;;)
{
input=getchar();
n++;
if(input==’a’)
break;
}
printf("after %d find ‘a’n", n);
}
//语言基础练习——素数问题(分支和循环)
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,i;
scanf("%d",&n);
for(i=2;i<=n-1;i++)
if(n%i==0)
break;
if(i>=n)
printf("1");
else
printf("0");
return 0;
}
//语言基础练习——级数求和(循环)
#include<stdio.h>
int main()
{
double s=0;
int n=0,k;
scanf("%d",&k);
do{
n++;
s += 1.0/n;
}while(s<=k);
printf("%dn",n);
}
//语言基础练习——级数计算(简单循环)
#include<stdio.h>
int main()
{
int m,i=1;
double t=0;
scanf("%d",&m);
for(;i>m||i<m;)
{
if(i==1)
{
i++;
t=1-1.0/(i*i);
}
else
{
i++;
t=t-1.0/(i*i);
}
}
printf("%.6lf",t);
}
//语言基础练习——完美数(循环)
/*
题目描述
一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:
输入
N
输出
? its factors are ? ? ?
样例输入
1000
样例输出
6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
496 its factors are 1 2 4 8 16 31 62 124 248
*/
#include<stdio.h>
int main()
{
int n,i,j,sum;
scanf("%d",&n);
for(i=3;i<n;i++)
{
sum=1;
for(j=2;j<i;j++)
{
if( i%j==0)
sum+=j;
}
if(i==sum)
{
printf("%d its factors are ",i);
for( j=1; j<i; j++ )
{
if( i%j == 0 )
printf("%d ", j );
}
printf("n");
}
}
}
//语言基础练习——迭代求平方根( 循环)
#include<stdio.h>
#include <math.h>
int main()
{
double x1,x2=1.0,a;
scanf("%lf",&a);
for(x2=1.0;fabs(x2-x1)>=0.00001;) //fabs:求浮点数x的绝对值
{
x1=x2;
x2=0.5*(x1+a/x1);
}
printf("%.3f",x2);
return 0;
}
//语言基础练习——猴子吃桃(循环)
#include<stdio.h>
int main()
{
int n,x1,x2;
scanf("%d",&n);
for(x2=1;n>1;n–)
{
x1=(x2+1)*2;
x2=x1;
}
printf("total=%d",x1);
}
//循环语句——用for求1~100的累计和
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,sum=0;
for (i=1;i<=100;i++)
{
sum=sum+i;
}
printf("%d",sum);
}
//分支语句——4个数字排序输出
#include <stdio.h>
int main(int argc, char *argv[])
{
int a,b,c,d,x;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a<b)
{x=a;
a=b;
b=x;}
if(a<c)
{x=a;
a=c;
c=x;}
if(a<d)
{x=a;
a=d;
d=x;}
if(b<c)
{x=b;
b=c;
c=x;}
if(b<d)
{x=b;
b=d;
d=x;}
if(c<d)
{x=c;
c=d;
d=x;}
printf("%d %d %d %d",a,b,c,d);
}
//语言基础练习——拍皮球(循环)
#include <stdio.h>
int main(int argc, char *argv[])
{
int t,i,n;
float h1,h;
scanf("%d",&t);
for(;t>0;t–)
{
scanf("%f %d",&h,&n);
h1=h;
for(i=1;i<n;i++)
{
h1+=h;
h=h/2;
}
printf("%.2f %.2fn",h1,h/2);
}
return 0;
}
//语言基础练习——相加和最大值
#include <stdio.h>
int main(int argc, char *argv[])
{
int a,b,c,x,x1,x2,x3;
scanf("%d%d%d",&a,&b,&c);
x1=a+b;
x2=b+c;
x3=a+c;
if(x1<x3)
{x=x1;
x1=x3;
x3=x;}
if(x1<x2)
{x=x1;
x1=x2;
x2=x;}
if(x3<x2)
{x=x3;
x3=x2;
x2=x;}
printf("%d",x1);
return 0;
}
//循环语句——求m~n的累计和
#include <stdio.h>
int main(int argc, char *argv[])
{
int m,n,x,i;
scanf("%d,%d",&m,&n);
if(m>n)
{
x=n;
for(i=n,x=0;i<=m;i++)
{
x+=i;
}
}
if(m<n)
{
x=m;
for(i=m,x=0;i<=n;i++)
{
x+=i;
}
}
printf("%d",x);
return 0;
}