第一篇:c语言题型总结
C语言题型总结
1.字母的输入与输出:
#include
#include
#include
#include
} if(m>0)printf(“%d is greater than 0”);else printf(“%d is less than or equal to 0”);3.分段函数:
#include
y=1+x;else if(x<4)
y=1+(x-2)*(x-2);else
y=(x-1)*(x-1)+(x-2)*(x-2);printf(“x=%f,y=%f”,x,y);} 4.成绩分等级: #include
printf(“请输入成绩s:”);scanf(“%d”,&s);
num=s/10;
switch(num){
case 10:grade='A';break;
case 9:grade='A';break;
case 8:grade='B';break;
case 7:grade='C';break;
case 6:grade='D';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
deflaut:break;
} } printf(“The score is %d,the grade is %cn”,s,grade);5.求最大公约数、最小公倍数:
#include
scanf(“%d,%d”,&m,&n);for(i=m;i>0;i--)
if(m%i==0&&n%i==0)
break;b=(m*n)/i;printf(“最大公约数:%d,最小公倍数:%d”,i,b);} 6.1000以内素数:
#include
{
for(j=2;j
if(i%j==0)
break;
if(j==i)
printf(“%d,”,i);} } 7.1000以内最大的10个质数求和:
#include
{
for(j=2;j
if(i%j==0)
break;
if(j==i)
{
a[n]=i;
n++;
if(n>10)
break;
} } for(n=0;n<10;n++)
sum+=a[n];
printf(“%d+%d+%d+%d+%d+%d+%d+%d+%d+%d=%dn”,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],sum);}
#include
{
for(j=2;j
if(i%j==0)
break;
if(j==i)
{
a[n]=i;
sum+=a[n];
n++;
if(n>9)
break;
} } for(n=0;n<10;n++)
printf(“%d,”,a[n]);
printf(“%d”,sum);}
8.各位的和:
#include
while(n!=0)
{
c+=n%10;
n=n/10;}
printf(“%d”,c);} 9.判断几位数:
#include
while(n!=0)
{
c++;
n=n/10;}
printf(“%d”,c);} 10.奇数项相加,偶数项相减:
#include
if(i%2==0)
sum=sum-1.0/i;
else
sum=sum+1.0/i;
i++;} printf(“%lfn”,sum);} 11.100-200以内找质数:
#include
{
sign=1;
for(j=2;j
if(i%j==0)
{
sign=0;break;
}
if(sign==1)
printf(“%d is/n”,i);
else
printf(“%d is not/n”,i);} } 12.10个成绩的最高、最低、平均值
#include
scanf(“%d”,&a[i]);for(i=0;i<10;i++){ sum+=a[i];aver=(float)sum/10;
if(a[i]>max)
max=a[i];
if(a[i] min=a[i];} printf(“max=%d,min=%d,aver=%f”,max,min,aver);} 13.数组删除一个元素 #include scanf(“%d”,&a[i]);printf(“删除其中一个数num=”);scanf(“%d”,&num);for(i=num;i<10;i++) a[i-1]=a[i]; a[9]=0; printf(“后来的数组为:”);for(i=0;i<10;i++) printf(“%d”,a[i]);} 14.数组添加一个元素 #include scanf(“%d,”,&a[i]);printf(“添加其中一个数num=”);scanf(“%d,”,&num);printf(“添加的数为:”);scanf(“%d”,&t); for(i=0;i b[i]=a[i]; b[num-1]=t;for(i=num;i<=10;i++) b[i]=a[i-1]; printf(“后来的数组为:”);for(i=0;i<11;i++) printf(“%d,”,b[i]);} 15.数组形式计算成绩 #include s1=0; for(j=0;j<3;j++) { scanf(“%d”,&a[i][j]); s1+=a[i][j]; } aver1[i]=(float)s1/3;} for(j=0;j<3;j++){ s2=0;(不能随便动位置) for(i=0;i<5;i++) s2+=a[i][j]; aver2[j]=(float)s2/5; s+=aver2[j];} for(i=0;i<5;i++) printf(“student%d:%3.1f,”,i,aver1[i]);for(j=0;j<3;j++) printf(“course%d:%3.1f,”,j,aver2[j]); printf(“Average:&3.1f”,s/3);} 输入成绩时,一行三个,之后回车 16.函数的多级调用 float myfabs(float x){ return x>0?x:-x;} float myfunc(float r){ return 2*myfabs(r)+1;} main(){ float f=0.5;printf(“%f”,myfunc(f));} 17.三个数比较大小 #include t=a;else t=b;if(c>t) t=c; return t;} int getMin(int a,int b,int c){ int k;if(a>b) k=b;else k=a;if(c k=c;return k;} int getMax(int a,int b,int c);int getMin(int a,int b,int c);main(){ int a,b,c;printf(“请输入三个整数:n”);scanf(“%d,%d,%d”,&a,&b,&c);printf(“最大值是:%d,最小值是:%d”,getMax(a,b,c),getMin(a,b,c));} 18.求最大公约数、最小公倍数(调用函数) #include if(a%i==0&&b%i==0) break;return i;} int mul(int a,int b){ int j;j=a*b/gcd(a,b);return j;} int gcd(int a,int b); int mul(int a,int b); main(){ int a,b;printf(“请输入两个整数:n”);scanf(“%d,%d”,&a,&b);printf(“最大公约数是:%d,最小公倍数值是:%d”,gcd(a,b),mul(a,b));} 19.二维数组找最大行、最小行,之后换行 #include int n,i,j,nMax=0,nMin=0,temp;int a[10][10];printf(“请输入正整数:n”); scanf(“%d”,&n);printf(“请输入二维数组a[%d][%d]n”,n,n);for(i=0;i for(j=0;j scanf(“%d,”,&a[i][j]);} for(i=0;i for(j=0;j { if(a[i][j]>a[nMax][j]) { nMax=i; } else if(a[i][j] { nMin=i; } } if(nMax==nMin) { printf(“变换后的二维数组为:n”); for(i=0;i { for(j=0;j printf(“%d,”,a[i][j]); printf(“n”); } } else { for(j=0;j { temp=a[nMax][j]; a[nMax][j]=a[nMin][j]; a[nMin][j]=temp; } printf(“变换后的二维数组为:n”); for(i=0;i { for(j=0;j printf(“%d,”,a[i][j]); printf(“n”); } } } 20.判断某年某月某日是星期几 #include int y,m,d,i,days;int isLeapYear(int year);scanf(“%d,%d,%d”,&y,&m,&d);for(i=2012;i days+=366;else days+=365;days+=daysInMonth(y,i);for(i=1;i case 0: printf(“星期日 ”);break;case 1: printf(“星期一 ”);break;case 2: printf(“星期二 ”);break;case 3: printf(“星期三 ”);break;case 4: printf(“星期四 ”);break;case 5: printf(“星期五 ”);break;case 6: printf(“星期六 ”);break;} } int isLeapYear(int year){ } { if(year%400==0||(year%4==0&&year%100!=0))return 1;return 0;int daysInMonth(int year,int month)switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12:return 31;case 4: case 6: case 9: case 11:return 30;case 2:if(isLeapYear(year)==1) } return 29; } else return 28;21.字符串的连接 #include printf(“请输入字符串1:”);gets(s1); printf(“请输入字符串2:”); gets(s2);while(*p1) p1++;(先输出p1所指的第一个字母,然后使p1指向下一个字符,再输出,p再自增) while(*p1++=*p2++);(把*p2的内容赋给*p1,p1,、p2自增,*p2就是表达式的值!指的是字符串的内容,而非对地址赋值)p是指针变量,他不能用来存放字符串,只能存放char变量的地址。 printf(“连接后结果:%sn”,s1);} #include } char s1[20],s2[20];int i,j;printf(“请输入字符串s1:”);gets(s1);printf(“请输入字符串s2:”);gets(s2);for(i=0;s1[i]!=' ';i++);for(j=0;s2[j]!=' ';j++) { } s1[i] =' ';s1[i]=s2[j];i++;puts(s1);#include char str1[20]=“hello”,str2[20]=“world”;printf(“the origin :”); gets(str1); gets(str2); catStr(str1,str2); printf(“now :”); puts(str1); puts(str2);} void catStr(char*str1,char*str2){ while(*str1!=' ') str1++; while(*str2!=' '){ *str1++=*str2; str2++;} *str1=' ';} 22.两个数交换 #include } int temp;temp=*p1;*p1=*p2;*p2=temp;main(){ int a=5,b=9,*pa=&a,*pb=&b; printf(“交换前a=%d,b=%dn”,a,b); } swap(pa,pb);printf(“交换后a=%d,b=%dn”,a,b);23.求三角形的周长和面积 #include printf(“nPlease input 3 sides of the triangle:”); } void Process(float f1,float f2,float f3,float *p1,float *p2){ } float s;s=(f1+f2+f3)/2;*p1=sqrt(s*(s-f1)*(s-f2)*(s-f3));*p2=f1+f2+f3;scanf(“%f%f%f”,&a,&b,&c);Process(a,b,c,&fArea,&fPerimeter);printf(“Area=%f,Perimeter=%f”,fArea,fPerimeter);24.回文数 #include } #include int n,c=0;printf(“Pleasse input the number:”);scanf(“%d”,&n);printf(“The original number is:%ldn”,n);printf(“And now the number is:”);long n;printf(“Pleasse input the number:”);scanf(“%d”,&n);printf(“The original number is:%ldn”,n);printf(“And now the number is:”);while(n){ printf(“%d”,n%10);} n/=10;printf(“n”);getchar();while(n){ c=c*10+n%10; n/=10;} } printf(“%d”,c);printf(“n”);getchar();25.字符串的复制 #include char s1[20],s2[20]; gets(s1); upCopy(s2,s1); puts(s1); puts(s2);} void upCopy(char *new,char *old){ while(*old!=' '){ if(*old>='A'&&*old<='Z') *new++=*old; old++;} *new=' ';} 26.初始化一个3X5的二维矩阵,计算前4列的和,保存在每行的最后一个元素中。例如:第一行的和为A[0][0]+ A[0][1] +A[0][2]+ A[0][3],放入A[0][4]中,要求输出原始矩阵和新矩阵。 #include int A[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}},i,j;for(i=0;i<3;i++){ for(j=0;j<5;j++)printf(“%dt”,A[i][j]); } printf(“n”);} for(i=0;i<3;i++){ A[i][4]=0; for(j=0;j<4;j++)A[i][4]+=A[i][j];} for(i=0;i<3;i++){ } for(j=0;j<5;j++)printf(“%dt”,A[i][j]);printf(“n”);27.编制函数mystrcat(char *s1,char *s2),将字符串s2种的数字字符连接到字符串s1的后面。例如s1=”1010”,s2=”Hi1T2”,则连接后的s1为 “101012”。 #include while(*s1!=' ') s1++;while(*s2!=' '){ if(*s2>='0'&&*s2<='9'){ *s1=*s2;s1++;} s2++;} *s1=*s2;或(*s1=' ';) } void mystrcat(char *s1,char *s2);main(){ char *s1[20],*s2[20];printf(“请输入字符串1:”);gets(s1);printf(“请输入字符串2:”);gets(s2); mytrcat(s1,s2);} puts(s1);28.写一个函数mystrcmp(char *s1,char *s2),其功能和库函数strcmp相同。在主函数中定义字符数组s1和s2并初始化,调用mystrcmp后由main函数输出比较的结果。本题不许使用字符串处理函数。#include int result;while(*s1!=' '){ if(*s1>*s2)return 1;if(*s1<*s2)return-1; s1++; s2++;} return 0; } char mystrcmp(char *s1,char *s2);main(){ char s1[20],s2[20]; int result;printf(“请输入字符串1:”);gets(s1);printf(“请输入字符串2:”);gets(s2); result=mystrcmp(s1,s2);printf(“%d”,result);} 还有问题,再试试?为啥不行 折半查找 #include int a[N],i,j,t,mid,x,flag,low,high;printf(“the origin shu zu is:”);for(i=0;i min=i; for(j=i+1;j { if(a[min]>a[j]) min=j; } } { } } t=a[i];a[i]=a[j];a[j]=t;printf(“now shu zu is: ”);for(i=0;i printf(“%d,”,a[i]);printf(“please input the number:”); scanf(“%d”,x); low=0;high=N-1;while(low<=high){ mid=(high+low)/2;if(x==a[mid]){ flag=1;break;} if(x>a[mid]) low=mid+1;else high=mid-1;} if(flag==1) printf(“found:%d”,mid+1);else } printf(“not found”);#include while(low<=high){ mid=(low+high)/2;if(n==a[mid]){ flag=1; break;} if(n>a[mid]) low=mid+1;else high=mid-1; } if(flag==1) printf(“found,%dn”,mid+1);else printf(“not foundn”);} C语言编程第一周 1.编写一程序P122.C实现以下功能 从键盘读入4个数num1、num2、num3、num4,输出:(num1÷num2的余数)×num3+num4,不需考虑num2为0和计算结果溢出的情况。要求输出的结果中,整数部分宽度为8(不足8时以0补足)、小数部分宽度为7。编程可用素材:printf(“请输入4个数:”)、printf(“n计算结果为:„。请输入4个数:100 30 100.1234567 2 5int main(void){ } 2.编写一程序P134.C实现以下功能 通过键盘输入一串(约定为10个字符),输出每个字符对应的ASCII码值(十进制)。编程可用素材:printf(”n请输入10个字符:“)、printf(”n加密结果为:„。请输入10个字符:Very Good! 加密结果为:86, 101, 114, 121, 32, 71, 111, 111, 100, 33 #include int main(void){ } 3.编写一程序P721.C实现以下功能 从键盘输入x,y,z的值,编写程序输出以下表达式的值: x+z%3*(int)(x+y)%2/4 编程可用素材:printf(“please input x,y,z: ”)、printf(“nResult = „。 程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。return 0;char a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; printf(”n请输入10个字符: “);scanf(”%c%c%c%c%c%c%c%c%c%c“, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9, &a10);printf(”n加密结果为: %d, %d, %d, %d, %d, %d, %d, %d, %d, %dn“, a1, a2, a3, a4, a5, a6, return 0;int num1, num2, num4;double num3, xx; printf(”请输入4个数:“);scanf(”%d%d%lf%d“, &num1, &num2, &num3, &num4);xx =(num1 % num2)* num3 + num4;printf(”n计算结果为:%016.7fn“, xx);计算结果为:00001026.2345670 #include int main(void){ } 4.编写一程序P736.C实现以下功能 从键盘上输入一个四位整数,计算各个位上的数字之和。编程可用素材:printf(”Input a number with 4-digit: “)、printf(”nsum=„n“„。Input a number with 4-digit: 1234 sum=10 #include int main(void){ } 第二周 1.编写一程序P132.C实现以下功能 在屏幕上输出I can printf n,”t &!。 程序的运行效果应类似地如图1所示。I can printf n,“t &!#include printf(”please input x,y,zz: “);scanf(”%f%f%f“, &x, &y, &zz);m = x + zz % 3 *(int)(x + y)% 2 / 4;printf(”nResult =%fn“, m);int main(void){ } 2.编写一程序P710.C实现以下功能 输入一个小写英文字母,首先输出它及其ASCII码,然后输出其对应的大写字母及其ASCII码。编程可用素材:printf(”Input a lowercase letter: “)、printf(”n„(„)„。 Input a lowercase letter: yy(121)Y(89)#include int main(void){ } 3.编写一程序P711.C实现以下功能 用scanf输入圆半径r,圆柱高h,求圆周长C1(=2πr)、圆面积S(=πr)、圆柱体积V(=πrh)。(注意:本题中规定圆周率取值为3.14) 编程可用素材:printf(“Input: ”)、printf(“nC1 = „ S = „ V =„。Input: r=1.3, h=5C1 = 8.16 S = 5.31V = 26.53 include int main(void){ printf(”Input: “);scanf(”r=%lf, h=%d“, &rr, &hh);cc = 3.14f * 2 * rr;ss = 3.14f * rr * rr;vv = 3.14f * rr * rr * hh;printf(”nC1 = %.2fn S = %.2fn V = %.2fn“, cc, ss, vv);double rr, cc, ss, vv;int hh; 22printf(”I can printf ,“ &!n”);return 0;char xiao, da;printf(“Input a lowercase letter: ”);scanf(“%c”, &xiao);da = xiaoaa)*(ppcc));printf(“narea=%.2fn”, area);return 0;printf(“Input a character: ”);scanf(“%c”, &aa);printf(“nAscii('%c')= 0x%xn”, aa, aa);char aa;} return 0;6.编写一程序P135.C实现以下功能 通过键盘输入弧度x,输出x的正弦值(可用库函数sin)。编程可用素材:printf(“请输入弧度 x: ”)、printf(“nSin(„)= „n”„。 请输入弧度 x: 1.552Sin(1.55)= 0.99982 #include int main(void){ } 7.编写一程序P259.C实现以下功能 先从键盘读入7个数据(依次为3整数、2字符、2实数),然后按示例格式倒序输出这7个数据。编程可用素材:printf(“请输入7个数据(依次为3整数、2字符、2实数): ”)、printf(“n这7个数据倒序为: ”)。请输入7个数据(依次为3整数、2字符、2实数): 81 192 35 x m 6127.123763 152.351192这7个数据倒序为: 7-152.35119 6-6127.12376 5-m 4-x 3-35 2-192 1-81 #include int main(void){ } 第三周 1.编写一程序P111.C实现以下功能 x(x只考虑整数int且必须定义为int、但F(x)完全可能超过int的表示范围)通过键盘输入(输入前return 0;printf(“请输入7个数据(依次为3整数、2字符、2实数): ”);scanf(“%d %d %d %c %c %lf %lf”, &a1, &a2, &a3, &a4, &a5, &a6, &a7);printf(“n这7个数据倒序为: 7-%.5f 6-%.5f 5-%c 4-%c 3-%d 2-%d 1-%dn”, a7, a6, a5, a4, a3, int a1, a2, a3;char a4, a5;double a6, a7;return 0;printf(“请输入弧度 x: ”);scanf(“%lf”, &xx);aa = sin(xx);printf(“nSin(%.2f)= %.5fn”, xx, aa);double xx, aa;a2, a1);给出提示Please input x:),然后计算并在屏幕上输出函数值。编程可用素材:printf(“Please input x: ”)、printf(“nF(„)= „。 ┌-5x+27 (x<0) F(x)= ├ 7909 (x=0) └ 2x-1 (x>0)Please input x: 3F(3)= 5 #include int main(void){ } 2.编写一程序P113.C实现以下功能 已知某银行整存整取存款不同期限的年息利率分别为:3.15%期限一年,3.63%期限二年,4.02%期限三年,4.69%期限五年,5.36%期限八年。从键盘上输入存钱的本金(以元为单位,必须定义为int且应考虑金额很大的情况)和存款期限(只考虑1,2,3,5,8),求到期时能从银行得到的利息(以元为单位,应考虑有小数,不计复利)。编程可用素材:printf(”Please input benjin,cunqi: “)、printf(”nlixi = „ yuan“„。Please input benjin,cunqi: 10000,8 lixi = 4288.00 yuan #include int main(void)if(xx > 0){ } return 0; fx = 2 *(double)xx5)*(double)xx + 27;printf(”nF(%d)= %.0fn“, xx, fx);int xx;double fx;{ } int bj, cq;double money; printf(”Please input benjin,cunqi: “);scanf(”%d,%d“, &bj, &cq);money = bj;if(cq == 1){ } { } return 0;else { } if(cq == 3){ } else { } if(cq == 5){ } else { } if(cq == 8){ } printf(”nlixi = %.2f yuann“, money * 0.0536 * 8);printf(”nlixi = %.2f yuann“, money * 0.0469 * 5); printf(”nlixi = %.2f yuann“, money * 0.0402 * 3);if(cq == 2){ } printf(”nlixi = %.2f yuann“, money * 0.0363 * 2);else printf(”nlixi = %.2f yuann“, money * 0.0315); 3.编写一程序P114.C实现以下功能 编写一个简单计算器程序,输入格式为:data1 op data2。其中data1和data2是参加运算的两个数(data1、data2必须定义为int,但二者相加可能超出int能表示的范围),op为运算符,它的取值只能是+、-、*、/、%。编程可用素材:printf(”Please input data1 op data2: “)、printf(”nError!chu shu wei 0.n“)。Please input data1 op data2: 3000 + 2000 3000+2000=5000 #include int main(void){ printf(”Please input data1 op data2: “);scanf(”%d %c %d“, &data1, &op, &data2);switch(op){ case '+': aa =(double)data1 + data2;printf(”n%d+%d=%.0fn“, data1, data2, aa);break;aa =(double)data11)int year, month, day, sum;{ case 11: sum = sum + 30; case 10: sum = sum + 31; case 9: sum = sum + 30; case 8: sum = sum + 31; case 7: sum = sum + 31; case 6: sum = sum + 30; case 5: sum = sum + 31; case 4: sum = sum + 30; case 3: sum = sum + 31; case 2: if(year % 400 == 0 ||(year % 100!= 0 && year % 4 == 0)) { sum = sum + 29; } else { sum = sum + 28; } case 1: sum = sum + 31; break; default : ;} sum += day;printf(”nIt is the %dth day.n“, sum); return 0;} 6.编写一程序P737.C实现以下功能 从键盘输入3个整数,输出绝对值最大的数。编程可用素材:printf(”Input 3 numbers: printf(“nThe number with maximum absolute value is „ .n” „Input 3 numbers: 1,-362, 300 The number with maximum absolute value is-362 “)、。#include int main(void){ } 7.编写一程序P744.C实现以下功能 (1)从键盘输入一个一百分制成绩,如果不在0~100范围内,则要求重新输入数据,直到输入的数据在0~100范围内。 (2)将输入的数据转换成等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。 (3)要求使用switch、case、default语句,结果赋值给变量grade,并将变量grade的值输出到屏幕上。 (4)变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。 编程可用素材:printf(”please input the score(0-100): “)、printf(”nscore=„,grade=„。please input the score(0-100): 103 please input the score(0-100): 55.3 score=55.3,grade=E include int main(void)return 0;printf(“Input 3 numbers: ”);scanf(“%d, %d, %d”, &a1, &a2, &a3);b1 =(int)fabs(a1);b2 =(int)fabs(a2);b3 =(int)fabs(a3);if(b1 >= b2 && b1 >= b3){ } if(b2 >= b1 && b2 >= b2){ } if(b3 >= b1 && b3 >= b2){ } printf(“nThe number with maximum absolute value is %d.n”, max);max = a3;max = a2;max = a1;int a1, a2, a3, b1, b2, b3, max;{ } 第四周 1.编写一程序P226.C实现以下功能 从键盘读入两个整数iBegin和iEnd,要求输出≥iBegin且≤iEnd的所有整数。编程可用素材:printf(“Please Input two number: ”)、printf(“nResult: ”)、printf(“ %d”„。Please Input two number: 51 62 Result: 51 52 53 54 55 56 57 58 59 60 61 62 2.编写一程序P231.C实现以下功能 从键盘读入两个整数iBegin和iCount,要求输出≤iBegin的iCount个整数(后一数为前一数减7)。编程可用素材:printf(“Please Input two number: ”)、printf(“nResult: ”)、printf(“ %d”„。return 0;printf(“please input the score(0-100): ”);scanf(“%f”, &score);while(score < 0 || score > 100){ } switch((int)(score / 10)){ } if(score < 60){ } printf(“nscore=%.1f,grade=En”, score);case 10: case 9: printf(“nscore=%.1f,grade=An”, score);break;printf(“nscore=%.1f,grade=Bn”, score);break;printf(“nscore=%.1f,grade=Cn”, score);break;printf(“nscore=%.1f,grade=Dn”, score);break;;printf(“please input the score(0-100): ”);scanf(“%f”, &score);float score;case 8: case 7: case 6: default: Please Input two number: 903 8 Result: 903 896 889 882 875 868 861 854 3.编写一程序P125.C实现以下功能 从键盘读入两个字符cBegin和cEnd,要求输出≤cBegin且≥cEnd的所有字符。编程可用素材:printf(“Please Input two char: ”)、printf(“nResult: ”)。Please Input two char: MA Result: MLKJIHGFEDCBA 4.编写一程序P269.C实现以下功能 从键盘读入两个整数iBegin和iEnd,要求按示例输出≤iBegin且≥iEnd的所有整数及其相邻的数。编程可用素材:printf(“Please Input two number: ”)、printf(“nResult: ”)。Please Input two number: 800 795 Result: 800/801 799/800 798/799 797/798 796/797 795/796 #include int main(void){ } 5.编写一程序P127.C实现以下功能 从键盘读入一个字符cBegin和一个数iCount,要求输出≤cBegin的iCount个字符。编程可用素材:printf(“Please Input a char and a number: ”)、printf(“nResult: ”)。Please Input a char and a number: M 9 Result: MLKJIHGFE #include int main(void){ printf(“Please Input a char and a number: ”);scanf(“%c %d”, &cBegin, &iCount);int iCount, i, x;char cBegin;return 0;printf(“Please Input two number: ”);scanf(“%d %d”, &iBegin, &iEnd);printf(“nResult: ”);for(i = iBegin;i >= iEnd;i--){ } printf(“n”);printf(“ %d/%d”, i, i+1);int iBegin, iEnd, i; } printf(“nResult: ”);for(i = cBegin, x = 1;x <= iCount;x++, i--){ } printf(“n”);return 0;printf(“%c”, i);6.编写一程序P140.C实现以下功能 从键盘输入5个字符,输出ASCII值最大的一个字符及其ASCII值。编程可用素材:printf(“请输入5个字符: ”)、printf(“n最大的字符是 „-„n”„。 请输入5个字符: YmAkX最大的字符是 m-109 #include int main(void){ return 0;7.编写一程序P714.C实现以下功能 用scanf输入10个整数(采用int数据类型),计算所有正数的和、负数的和以及10个数的和。编程可用素材:printf(“Input 10 integers: ”)、printf(“nzhengshu=„,fushu=„,all=„。printf(”请输入5个字符: “);scanf(”%c%c%c%c%c“, &a1, &a2, &a3, &a4, &a5);max = a1;if(a2 > max){ } if(a3 > max){ } if(a4 > max){ } if(a5 > max){ } printf(”n最大的字符是 %c-%dn“, max, max);max = a5;max = a4;max = a3;max = a2;char a1, a2, a3, a4, a5, max;Input 10 integers: 4 6 20-45 35 56-23-4 9 70 zhengshu=200,fushu=-72,all=128 #include int main(void){ int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, fushu, zhengshu, all; printf(”Input 10 integers: “);scanf(”%d %d %d %d %d %d %d %d %d %d“, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9, &a10);fushu = 0;zhengshu = 0;if(a1 > 0){ } else { } if(a2 > 0){ } else { } if(a3 > 0){ } else { } if(a4 > 0){ } else { } fushu += a4;zhengshu += a4;fushu += a3;zhengshu += a3;fushu += a2;zhengshu += a2;fushu += a1;zhengshu += a1; if(a5 > 0){ } else { } if(a6 > 0){ } else { } if(a7 > 0){ } else { } if(a8 > 0){ } else { } if(a9 > 0){ } else { } if(a10 > 0){ } zhengshu += a10;fushu += a9;zhengshu += a9;fushu += a8;zhengshu += a8;fushu += a7;zhengshu += a7;fushu += a6;zhengshu += a6;fushu += a5;zhengshu += a5; } else { } all = fushu + zhengshu;printf(”nzhengshu=%d,fushu=%d,all=%dn“, fushu, zhengshu, all);return 0;fushu += a10;8.编写一程序P752.C实现以下功能 键盘输入m,n(约定:m和n均≤1000且为正整数),输出介于m和n(含m和n)中能被3整除且至少有位数字是5的所有整数。编程可用素材:printf(”Input m, n: “)、printf(”nResult: “)。Input m, n: 100,200 Result: 105 135 150 153 156 159 165 195 #include int main(void){ } printf(”Input m, n: “);scanf(”%d,%d“, &m, &n);printf(”nResult: “);if(m > n){ } else { } for(;i <= max;i++){ } printf(”n“); return 0;if((i % 3 == 0)&&(i % 10 == 5 ||(i / 10)% 10 == 5 ||(i / 100)% 10 == 5)){ } printf(” %d“, i);i = m;max = n;i = n;max = m;int m, n, max, i;9.编写一程序P753.C实现以下功能 计算X的Y次方,其中Y为整数(可以是负整数或0),X为实型。注意,程序中不能使用库函数pow或使用同名的变量、函数、单词。编程可用素材:printf(”Input x, y: “)、printf(”nResult: „^„=„。Input x, y: 3.7,5 Result: 3.700000^5=693.439570 #include int main(void){ } 10.编写一程序P215.C实现以下功能 求S=1/1!+1/2!+1/3!+„+1/N!并输出结果(显示时小数部分占16位,计算时要求从第1项开始往后累加)。N为任意自然数(只考虑int型),从键盘读入。编程可用素材:printf(“Please input n: ”)、printf(“nS=1/1!+1/2!+...+1/„!=„。 Please input n: 18 S=1/1!+1/2!+...+1/18!=1.7***0455 #include int main(void){ printf(”Please input n: “);double ss, j;int n, i;return 0;printf(”Input x, y: “);scanf(”%lf,%d“, &xx, &yy);aa = 1;i =(int)fabs(yy);j = 1;for(;j <= i;j++){ } if(yy < 0){ } printf(”nResult: %f^%d=%fn“, xx, yy, aa);aa = 1 / aa;aa = xx * aa;double xx, aa;int yy, i , j; } scanf(”%d“, &n);ss = 0;j = 1;for(i = 1;i <= n;i++){ } printf(”nS=1/1!+1/2!+...+1/%d!=%.16fn“, n, ss);return 0;j = j * i;ss = 1 / j + ss;11.编写一程序P716.C实现以下功能 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字(可取1~9之间的一个值)。例如2+22+222+2222+22222(此时共有5个数相加),其中a值和有几个数相加由键盘输入控制。注意s的值有可能超出int的范围,编程可用素材:printf(”Please input a,n: “)、printf(”na+aa+...=„。 Please input a,n: 2,3 a+aa+...=246 #include int main(void){ } 第五周 1.编写一程序P211.C实现以下功能 根据输入的n在屏幕上显示对应的以#组成的菱形图案。编程可用素材:printf(“Please input n: ”)。Please input n: 1 # return 0;printf(“Please input a,n: ”);scanf(“%d,%d”, &aa, &nn);j = 0;ss = 0;for(i = 1;i <= nn;i++){ } printf(“na+aa+...=%.0fn”, ss);j = j * 10 + aa;ss = ss + j;double ss, j;int aa, nn, i;### # #include int main(void){ } 2.编写一程序P724.C实现以下功能 从键盘输入1~9之间的一个数,根据输入的数,输出对应的下三角乘法口诀表。要求积的输出占3个宽度,且左对齐。编程可用素材:printf(“input a number(1~9): ”)。input a number(1~9): 3 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 #include int main(void){ printf(“input a number(1~9): ”);scanf(“%d”, &num);for(i=1;i<=num;i++){ int i, j, num;return 0;printf(“Please input n: ”);scanf(“%d”, &n);for(i=1;i<=2*n+1;i=i++){ } for(j=1;j<=(2*n+1);j++){ } printf(“n”);if(i+j>=n+2 && i+j<=3*n+2 && i-j>=-n && i-j<=n){ } else { } printf(“");printf(”#“);int n , i, j; } } for(j=1;j<=i;j++){ } printf(”n“);printf(”%d*%d=%-3d“, i, j, i * j);return 0;3.编写一程序P740.C实现以下功能 公鸡每只5元,母鸡每只3元,小鸡每3只1元,用M元钱买N只鸡,问公鸡、母鸡、小鸡各几只。编程可用素材:printf(”Input the money: “)、printf(”Input the number: “)、printf(”n cock hen chickn“)。 Input the money: 100 Input the number: 100 cock hen chick 0 #include int main(void){ printf(”Input the money: “);scanf(”%d“, &m);printf(”Input the number: “);scanf(”%d“, &n);printf(”n cock hen chickn“);for(cock=0;cock<=n;cock++){ for(hen=0;hen<=n-cock;hen++){ } for(chick=0;chick<=n-hen-cock;chick = chick +3){ } if(cock + hen + chick == n && cock * 5 + hen * 3 + chick / 3 == m){ } printf(”%6d%6d%6dn“, cock, hen, chick);int m, n, cock, hen, chick; } } return 0;4.编写一程序P112.C实现以下功能 设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例如输入8.75表示8.75%),计算该企业的产值在哪年实现翻番以及翻番时的产值,然后输出(输出时以万为单位,应考虑有小数)。编程可用素材:printf(”Please input x: “)、printf(”nyear = „ nian, chanzhi = „。Please input x: 50.6 year = 2008 nian, chanzhi = 11340.18 #include int main(void){ } 5.编写一程序P224.C实现以下功能 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第n(n从键盘输入)天早上想再吃时,就只剩下一个桃子了。求第一天共摘了多少个桃子(不考虑猴子是否真的能吃多少桃子)。编程可用素材:printf(“Please input n: ”)、printf(“ntotal=„”„。Please input n:13 total=12286 #include int main(void){ printf(“Please input n: ”);scanf(“%d”, &n);int n, i, total;return 0;printf(“Please input x: ”);scanf(“%f”, &x);year = 2006;for(chanzhi=5000;chanzhi<=10000;chanzhi=chanzhi*(x/100+1)){ } printf(“nyear = %d nian, chanzhi = %.2fn”, year, chanzhi);year = year + 1;int year;float x;double chanzhi; } total = 1;for(i=1;i<=n-1;i++){ } printf(“ntotal=%dn”, total);return 0;total =(total + 1)* 2;6.编写一程序P830.C实现以下功能 求1+2+3+„„+n≤m时的最大n值及和sum(=1+2+3+„„+n),其中m从键盘输入——不得使用解方程、算平方根方法。编程可用素材:printf(“please input m: ”)、printf(“nResult: n=„, sum=„。please input m: 10000 Result: n=140, sum=9870 #include int main(void){ } 7.编写一程序P223.C实现以下功能 一个球从10000m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第n(n从键盘输入)次落地时,共经过多少米?第n次反弹多高?编程可用素材:printf(”Please input n: “)、printf(”nsn=„,hn=„。Please input n: 10 sn=29960.937500,hn=9.765625 #include int main(void){ int h, i, n;double sn, hn;return 0;printf(“please input m: ”);scanf(“%d”, &m);sum =1;for(n=1;sum<=m;){ } printf(“nResult: n=%d, sum=%dn”, nn);n++;sum = sum + n;int m, n, sum; } 8.编写一程序P745.C实现以下功能 输入两个正整数m和n,求其最大公约数和最小公倍数。注:最大公约数也称最大公因子,指某几个整数共有因子中最大的一个;两个整数公有的倍数称为它们的公倍数,其中最小的一个正整数称为它们两个的最小公倍数。编程可用素材:printf(“please input two integer numbers: ”)、printf(“nthe greatest common divisor is printf(”nthe least common multiple is „。please input two integer numbers: 35 15 the greatest common divisor is 5 the least common multiple is 105 #include int main(void){ printf(“please input two integer numbers: ”);scanf(“%d %d”, &m, &n);if(m > n){ temp = m;m = n;n = temp;int m , n, zdgys, zxgbs, temp, i; „、return 0;printf(“Please input n: ”);scanf(“%d”, &n);h = 10000;if(n==1){ } else { } printf(“nsn=%f,hn=%fn”, sn, hn);for(i=2, sn=h, hn=h;i<=n;i++){ } hn = hn / 2;hn = hn / 2;sn = sn + 2 * hn;hn = h;sn = h; } } for(i=m;i<=m;i--){ } zxgbs =(n * m)/ zdgys;printf(“nthe greatest common divisor is %d”, zdgys);printf(“nthe least common multiple is %dn”, zxgbs);return 0;if(m%i==0 && n%i==0){ } zdgys = i;break;9.编写一程序P793.C实现以下功能 从键盘读入一个数n(必须使用long int),先逆序输出n的各位数,再输出n的各位数之和。编程可用素材:printf(“请输入一个数:”)、printf(“n该数的各位数之逆序为:”)、printf(“n该数的各位数之和为:%dn”„。请输入一个数:1234567 该数的各位数之逆序为:7654321 该数的各位数之和为:28 #include int main(void){ } return 0;printf(“请输入一个数:”);scanf(“%ld”, &aa);printf(“n该数的各位数之逆序为:”);for(sum=0;aa!=0;){ } printf(“n该数的各位数之和为:%dn”, sum);bb = aa % 10;aa = aa / 10;sum = sum + bb;printf(“%d”, bb);long int aa;int bb, sum;10.编写一程序P225.C实现以下功能 从键盘读入一个整数Num,按从小到大的顺序依次输出所有满足条件的3位数:该数各位数字的立方和等于Num。编程可用素材:printf(“Please Input a number: ”)、printf(“nResult: ”)、printf(“%5d”„、printf(“not Find!n”)。Please Input a number: 251 Result: 155 236 263 326 362 515 551 623 632 include int main(void){ } return 0;int num, aa, bb, cc, n, flag=0; printf(“Please Input a number: ”);scanf(“%d”, &num);printf(“nResult: ”);for(n=100;n<=999;n++){ } if(!flag){ } else { } printf(“n”);printf(“not Find!n”);aa = n / 100;bb = n % 100 / 10;cc = n % 10;if(aa*aa*aa+bb*bb*bb+cc*cc*cc == num){ } flag = 1;printf(“%5d”, n); 全国计算机二级C语言考试上机题型总汇 (一)关于“******”问题 1、将字符串中的前导*号全部删除,中间和后面的*号不删除。void fun(char *a){ char *p=a;while(*p= =’*’)p++;for(;*p!=’ ’;p++,a++)*a=*p;*a=’ ’;} 2、只删中间* int i;for(i=0;a[i]= =’*’;i++)for(;h 3、只删尾* while(*a!=’ ’)a++;a--;while(*a= =’*’)a--;*(a+1)=’ ’; 4、只留前* int i , j=0;for(i=0;a=’*’;i++);j=i;for(;a;i++)if(a!=’*’)a[j++]=a[i];a[j]=’ ’; 5、只留中间* int i,j=0;for(i=h;i第二篇:C语言第一类题型
第三篇:计算机二级C语言上机题型总结