C语言习题适合初学者.doc
优质文本程序设计C语言习题汇编编写一个程序能使计算机将所输入的三个大写英文字母变成小写字母。#include <stdio.h>void main( ) char ch1,ch2,ch3; scanf(“%c%c%c,&ch1,&ch2,&ch3); if (ch1>='A' && ch1<='Z') ch1=ch1+32; printf("%cn",ch1 );if (ch2>='A' && ch2<='Z') ch2=ch2+32; printf("%cn",ch2 );if (ch3>='A' && ch3<='Z') ch3=ch3+32; printf("%cn",ch3 ); 编写一个程序实现如下功能:从键盘输入两个整数a、b,计算a2+b2的值。#include "stdio.h"void main()int a,b;printf("请输入两个整数n");scanf("%d%d",&a,&b);printf("两个整数平方和为:%ldn",a*a+b*b);编写一个程序实现如下功能:将整数n0n9转化为相应的ASCII字符,例如,整数3转换后变成字符3 37 / 38优质文本#include "stdio.h"void main() int n; printf("输入整数:n"); scanf("%d",&n);printf(“n=%d,对应字符为:%cn",n,n);以下程序的功能是:输出字符串“China。#include <stdio.h>main()char ch1, ch2; int i; ch1='C' ch2='h' i='i' putchar(ch1); putchar(ch2); putchar(i); putchar('n'); putchar('141'); putchar('n'); #include "stdio.h"main()int n;printf("输入一位整数n");scanf("%d",&n);while (1)if(n>=0&&n<=9)break;else printf("输入数据有误,请重新输入一位整数n"); scanf("%d",&n);printf("n=%d,ASCII码为:%d 对应字符为:%cn",n,n+48,n+48);优质文本以下程序的功能是:用puts()函数输出字符串This is a map.#include <stdio.h> main() char str1 ="This is a map." /* 字符数组str1的容量由实际字符确定 */ char str215="This is a map." /*该字符串总长度14字节,增加1字节'0' */ puts(str1); /* 函数调用语句,调用puts(),将str1字符串内容输出 */ puts(str2); /* 输出字符串str2的内容,都是自动换行 */ putchar('n'); putchar(str10);putchar('n'); putchar(str11);putchar('n');putchar(str12);putchar('n'); putchar(str13);putchar('n'); putchar(str14);putchar('n'); putchar(str15);putchar('n'); putchar(str16);putchar('n'); putchar(str17);putchar('n'); putchar(str18);putchar('n'); putchar(str19);putchar('n'); putchar(str110);putchar('n'); putchar(str111);putchar('n'); putchar(str112);putchar('n'); putchar(str213); /* 输出字符串str1的末字符'.' */ putchar('n'); /* 用putchar()函数输出仅含一个转移字符的字符'n' */ 以下程序的功能是:输入一个数,判断它是否既是5的倍数又是7的倍数,然后输出判断结果。#include<stdio.h>main() int number; printf("please input a number!n"); scanf("%d",&number); /* number存放被测试数据 */ if(number%5=0&&number%7=0 ) /* number是5或7的倍数 */ printf("yes,It is the multiple of5 and7.n"); else /* number不是5或7的倍数 */ printf("no,It isn't the multiple of 5 and7. n");以下程序的功能为:输入1个字母,如果它是小写字母,那么首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,那么输出FGH;输入a,那么输出ZAB;输入M,那么输出LMN;输入Z,那么输出YZA。#include <stdio.h>main() char ch,c1,c2; printf("Enter a character:"); ch=getchar(); if(ch>='a')&&(ch<='z') /*如果是小写字母,那么转换成大写字母*/ ch-=32; c1=ch-1; c2=ch+1; if(ch='A') c1=ch+25; else if(ch='Z') c2=ch-25; putchar(c1); putchar(ch); putchar(c2); putchar('n');以下程序的功能为:判断从键盘上输入的一个字符,并按以下要求输出。假设该字符是数字 输出字符串"0-9"假设该字符是大写字母 输出字符串"A-Z"假设该字符是小写字母 输出字符串"a-z"假设该字符是其他字符 输出字符串"!,"#include <stdio.h> main() char c; scanf("%c",&c); if('0'<=c&&c<='9') printf("0-9n"); else if('A'<=c&&c<='Z') printf("A-Zn"); else if('a'<=c&&c<='z') printf("a-zn"); else printf("!,n");程序的功能为:输入3个整数后,输出其中最大值。#include "stdio.h"main()int a,b,c,max;printf ("请输入3个整数:n");scanf ("%d%d%d",&a,&b,&c);max=a;if (c>b) if (c>a) max=c; /* c>b>a */else /* b>c */if (b>a) max=b; /* b>c>a */printf("3个数中最大者为:%dn",max);以下程序的功能为:判断用户所输入的年份是否是闰年.#include<stdio.h>main() int y,f;scanf("%d",&y );if ( y%400=0 ) f=1;else if (y%4=0&&y%100!=0) f=1;else f=0;if ( f ) printf("%d is",y );else printf("%d is not",y );printf( " a leap yearn" );以下程序的功能是:对输入两个整数,按从大到小顺序输出。#include <stdio.h>void main() int x,y,z;scanf("%d%d",&x,&y);if (x<=y) z=x;x=y;y=z;printf("%d,%dn",x,y);有一函数: 编写程序,输入x的值,输出y的值。#include "stdio.h"main()float x,y;printf("请输入X的值n");scanf("%f",&x);if(x>=10)y=3*x-11;else if(x>=1)y=2*x-1;else y=x;printf("y=%fn",y);getchar();输入一个不多于3位的正整数,要求:求出它是几位数;分别打印出每一位数字;按逆顺序打印出各位数字,例如原来为321,应输出123。#include "stdio.h"main()int x;printf("输入一个整数范围:0-999n");scanf("%d",&x);if (x>999) printf("数据输入错,无法处理,再见!n");else if (!(x/10) printf("该整数为一位数,%dn",x);else if(!(x/100) printf("该整数为二位数,%d,十位上的数%d 个位上的数%d 逆序%dn",x,x/10,x%10,x%10*10+x/10);else printf("该整数为三位数,%d,百位上的数%d 十位上的数%d 个位上的数%d 逆序%dn",x,x/100,x/10%10,x%10,x%10*100+x/10%10*10+x/100);编写程序,输入一个三角形的3条边,假设能构成一个直角三角形,那么输出该三角形面积,反之输出相应提示信息。#include "stdio.h"main() float t1,t,a,b,c,s=0;printf("请输入三角形的三条边!n");scanf("%f%f%f",&a,&b,&c); t=(t=a>b?a:b)>c?t:c;if(t=a)t1=a;a=c;c=t1;if(t=b)t1=b;b=c;c=t1;if(c*c=a*a+b*b) printf("三角形面积为:%fn",1.0/2*a*b);else printf("不能构成三角形n");以下程序的功能为:实现加、减、乘、除四那么运算,请填写适当的符号或语句,使程序实现其功能。#include <stdio.h>main() int a,b,d; char ch; printf("Please input a expression:"); scanf("%d%c%d", &a,&ch,&b ); switch(ch) case '+':d=a+b; printf("%d+%d=%dn",a,b,d); break; case '-':d=a-b; printf("%d-%d=%dn",a,b,d); break; case '*':d=a*b; printf("%d*%d=%dn",a,b,d); break; case '/': if( b=0 ) printf("Divisor is zeron"); else printf("%d/%d=%fn",a,b,( float )a/b); /*强制类型转换*/ break; default: printf("Input Operator error!n"); 以下程序的功能是:找出5个数的最大、最小值。#include <stdio.h>main() int a,b,c,d,e,max,min; scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); max=a>b?a:b,max=max>c?max:c,max=max>d?max:d,max=max>e?max:e; min=a<b?a:b,min=min<c?min:c,min=min<d?min:d,min=min<e?min:e; printf("max=%d,min=%dn",max,min );输入5个实数,去掉一个最大值,去掉一个最小值,求其他三个数的平均值(输出时要求保存一位小数.)如输入2.1,3.5,4.3,1.9,3.7。那么输出3.5+2.1+3.7的平均值:3.1。#include "stdio.h"float maxf(float x,float y) float max;max=x>y?x:y;return max;float minf(float x,float y)float min;min=x<y?x:y;return min;main()float a,b,c,d,e,t;printf("input datan");scanf("%f%f%f%f%f",&a,&b,&c,&d,&e); if(maxf(a,b)=b) t=b;b=a;a=t;if(maxf(a,c)=c) t=c;c=a;a=t;if(maxf(a,d)=d) t=d;d=a;a=t;if(maxf(a,e)=e) t=e;e=a;a=t;if(minf(b,e)=b) t=b;b=e;e=t;if(minf(e,c)=c) t=c;c=e;e=t;if(minf(e,d)=d) t=d;d=e;e=t;printf("a=%f,b=%f,c=%f,d=%f,e=%fn",a,b,c,d,e);printf("ave=%.1fn",(b+c+d)/3);一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。#include "stdio.h"main()long x,j=1;for(x=10000;x<=99999;x+) if(x%10=x/10000&&x/1000%10=x/10%10)printf("%6d",x);if(!(j%5) printf("n");j+;以下程序的功能是:显示学生成绩与等级#include "stdio.h"main() int x; printf("please input x(0<=x<=100):"); scanf("%d", &x); if(x>100|x<0) printf("x=%d data error! n",x); else if (x>=90) printf("x=%d is grade A!n",x); else if (x>=80) printf("x=%d is grade B!n",x); else if(x>=60) printf("x=%d is grade C!n",x); else printf("x=%d is grade D! n",x); 程序的功能为:求1100之和和值为5050并输出。#include <stdio.h>main() int i,sum=0; i=1; while(i<=100) sum=sum+i; i+; printf("The sum from 1 to 100 is %dn",sum);程序的功能为:倒序打印26个英文字母。#include <stdio.h>main() char x; x='z' while(x>='a') printf("%3c",x); x-; printf("n");问题 根据4名专家对4件产品质量评估,找出质量最好的产品和评估最正确的专家。4名专家的评语如下:A说:2号产品质量最好。B说:4号产品是最好的。C说:3号产品质量不是最好的。D说:B说错了。分析因为只有一件产品质量最好,只有一位专家的评语最正确,用每一件产品为最正确逐一地去测试4位专家的话,如果不满足一位专家的评语最正确的条件,就否认该产品为最正确,继续测试另一件产品,只有当每一件产品为最正确,且测试4位专家的的评语时,只有一位专家的评语最正确,这就是问题的解。#include "stdio.h"main()int k,man,sum=0,g=0; /*man用来记录说对的专家*/ int best;for(k=1;k<=4;k+) /*有4中可能情况,循环4次*/ /*循环控制变量k同时也代表4种可能情况*/sum=0;if (k=2) sum=sum+1; man=1; /*测试专家A的话是否为真*/if (k=4) sum=sum+1;man=2; /*测试专家B的话是否为真*/if (k!=3) sum=sum+1;man=3; /*测试专家C的话是否为真*/if (k!=4) sum=sum+1;man=4; /*测试专家D的话是否为真*/ if (sum=1) /*如果4句话有1句为真,输出最好产品*/printf("The best product is %d.n",k);printf("%c is right.n",64+man); /*输出专家*/g=1; /*设置有解标志*/break; /*退出测试*/if (g!=1) /*如果无解,输出没有找到答案*/printf("Can't fount the answer!n");以下程序的功能为:用辗转相除法求两个正整数的最大公约数。提示:“辗转相除法 求两个正整数的最大公约数的算法如下:将两数中大的那个数放在m中,小的放在n中。求出m被n除后的余数r。假设余数为0那么执行步骤7;否那么执行步骤4。把除数作为新的被除数;把余数作为新的除数。求出新的余数r。重复步骤3到5。输出n,n即为最大公约数。优质文本#include <stdio.h> main () int r, m, n,t; scanf ("%d%d",&m,&n); if (m<n) t=m;m=n;n=t; r = m%n; while (r) m=n;n=r;r=m%n; printf ("%dn",n);# include <stdio.h>int gcd(int, int);main( ) int a, b;scanf(“%d, %d, &a, &b);printf(“a=%d, b=%d, gcd=%dn, a, b, gcd(a,b); int gcd(int x, int y) int r; r=x%y; if(r=0) return y; return gcd(y, r);优质文本以下程序的功能为:计算1020个西瓜几天后能卖完第一天卖了一半多两个,以后每天卖剩的一半多两个;#include <stdio.h>main() int day,x1,x2; day=0; x1=1020; while(x1) x2=x1/2-2; x1=x2;day+; printf("day=%dn",day); 编写程序,编写一个程序实现如下功能:用以下近似公式计算e值,误差应小于10-5#include <stdio.h> main() double e, a; /* a为通项,e为和 */ int i=1; e = 1.0; a = 1.0; do a /= i; e+= a; i = i + 1; while ( a>=1e-6 ); /*(1e-6 ) 表示10-6 */ printf( "e=%fn", e );编写一个程序实现如下功能:验证以下结论:任何一个自然数n的立方都等于n个连续奇数之和。例如: 13 =1 ; 23 =3+5 ; 33 =7+9+11 。 要求:程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为 0 时止。#include "stdio.h"main() long n,s;int i,j;scanf("%ld",&n);for(i=1;i+) for(s=0,j=i;j<i+n;j+) s+=2*j-1; if(n*n*n=s) printf("%ld*%ld*%ld=%ld=",n,n,n,n*n*n); for(j=i;j<i+n;j+) printf("%d%c",2*j-1,j=i+n-1?'n':'+'); break; 以下程序的功能为:计算1000!的末尾有多少个零。#include "stdio.h"int main() int m, i, k; for(k=0, i=5; i<=1000; i+=5) m=i; while(m%5=0) k+; m=m/5; printf("k=%dn", k);以下程序的功能为:接收键盘上的输入,直到按键为止,这些字符被原样输出,但假设有连续的一个以上的空格时只输出一个空格。#include <stdio.h>void main ( ) char cx;while (cx=getchar() !='n') if (cx!=' ') putchar(cx) ; if (cx=' ') if ( cx=getchar()=' ' ) putchar( cx ); 编写一个程序实现如下功能:计算1100之间所有含8的数之和。答案:#include <stdio.h>main()int i, sum=0;for(i=1;i<=100;i+)if(i%10=8|i/10%10=8) sum=sum+i; printf("sum=%dn",sum);将一张面值为100元的人民币等值换成100张5元、1元和0.5元的零钞,要求每种零钞不少于1张,问有哪几种组合?优质文本#include "stdio.h"main()int x, y, z,s=0;for (x=1;x<20; x+)for (y=100-5*x;y>=1; y-) z=(100-5*x-y)/2;if(z&&x*5+y+z*2=100) s+; printf("s=%dn",s);#include "stdio.h" void main()int x,y,z,s=0; for(x=0;x<100;x+) for(y=0;y<100;y+) for(z=0;z<100;z+) if(x+y+z=100)&&(x*50+y*10+z*5=1000) printf("x=%d,y=%d,z=%dn", x,y,z); s+; printf("n s=%dn",s);优质文本以下程序的功能为: (1)输入假设干个学生成绩,假设输入数据大于100或小于0(除 -999外),那么不作记录,重新输入;当输入 999, 那么输入结束。(2) 统计所有输入成绩的最大值、最小值、成绩个数、平均值,并输出之。请纠正程序中存在错误程序中有8处错误,使程序实现其功能。#include <stdio.h>#include <stdlib.h> /* 否那么exit无法执行*/void main() int mark, n = 0, sum = 0; int max = 0 , min = 100; printf("Input score(0-100),-999结束输入:n");for( ; ; ) scanf("%d", &mark); if (mark=-999) break; else if (mark >100 | mark<0) printf("mark>100, Reinput!n"); exit(0); n+;sum += mark; if ( mark>max ) max = mark; else if(mark<min) min= mark; sum /= n; printf("max=%dnmin=%dngeshu=%dnaverage=%dn", max,min,n,sum); 以下程序的功能为:查找100至999之间所有符合以下条件的数:是另一数的平方;至少有两位数是相同的。如数144,它是12的平方,其中有两位4。#include "stdio.h"main() int n,m,a,b,c; for ( n = 10; n <= 31; n+ ) m = n*n; a = m%10; b = m / 10 % 10; c = m / 100 % 10; if ( a=b | b=c | a=c ) printf( "%d ", m ); 程序的功能为:输出如下的图形,要求顶端的*定位在第21字符位置。 * * * *#include <stdio.h>void main() int i,j; for (i=0;i<4;i+) for (j=0;j<=20-i;j+) printf(" "); for (j=0;j<2*i+1;j+) printf("*");printf("n"); 程序的功能为:打印九九乘法表。#include <stdio.h> main() int i,j; for (i=1;i<10;i+) for (j=1;j<=i;j+) printf("%d",i*j); printf(" "); if (i*j<10)printf(" "); printf("n"); 以下程序的功能为:由1、2、3、4个数字,能组成多少个互不相同且无重复三位数?并输出这些数。#include <stdio.h>void main() int i,j,k,count=0; for(i=1;i<=4;i+) for(j=1;j<=4;j+) if(i!=j) for(k=1;k<=4;k+) if(j!=k&&i!=k) printf("%dt",i*100+j*10+k); count+; printf("n%dn",count);以下程序的功能为:用“奇数构成的三角形,行数n从键盘输入。# include <stdio.h>main() int i,j,n,k; scanf("%d",&n); for(k=-1,i=1;i<=n;i+) for(j=1;j<=4;j+) printf("%4c",' '); for(j=1;j<=i;j+) printf("%-4d",k=k+2); printf("n"); 编写一个程序实现如下功能:求10000以内能被13整除,且其中至少包含有2个7的数。#include "stdio.h"main()int i,j,k,k1=0;for(i=13;i<=10000;i+)if(!(i%13) j=0;k=i/10;k1=0;while(k) if(k%10=7) j+; k=k/10; if(j>=2) k1=1;break;if(k1) printf("%5d",i);printf("n");求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),其中a和项数由键盘输入。#include "stdio.h"main()int a,n,i,j,s=0,t;printf("a=?n=?n");scanf("%d%d",&a,&n);t=a; for(i=1;i<=n;i+) s=s+t; t=t*10+a;printf("s=%dn",s);以下程序的功能是:求1-1/2+1/3-1/4+1/99-1/100之值。#include <stdio.h> main() int i; float s; s=0; for (i=1;i<=100;i+) if (!(i%2) /*偶数时累加-1/ i */ s=s-1.0/i; else s=s+1.0/i; /*奇数时累加1/i */ printf("s=%f ",s); 以下程序的功能是:用天平秤量100克的药,天平秤所配置的砝码只有1克、2克和5克3种,找出该天平秤量100克的药的方法。# include