简单C测试题
1.编写一个程序,要求输入一个ASCII码值(如66),然后输出相应的字符。
#include int main(void)
{char c;printf("请输入一个ASCII码值:");scanf("%hhd",&c);printf("%hhd的ASCII码是%c\n",c,c);return 0;
} 2.一年大约有3.1536*107s。编写一个程序,要求输入你的年龄,然后显示该年龄等于多少秒。
#include int main(void)
{int year = 3.1536e7;int old,sum;printf("请输入您的年龄:");scanf("%d",&old);sum = year * old;printf("%d岁等于%e秒\n",old,sum);return 0;
} 3.一个水分子的质量大约为3.0*10-23g,1夸脱水大约有950g。编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含多少个水分子。
#include #define water 950int main(void)
{float s,sum,m = 3.0e-23;printf("请输入水的夸脱数:");scanf("%f",&s);sum = s * water / m;printf("%.2f夸脱水中包含%e个水分子\n",s,sum);return 0;
} 4.假设ch为char类型变量。使用转义序列、十进制值、八进制字符常量以及十六进制字符常量等方法将其赋值为回车符(使用ASCII码)。
#include int main(void)
{char ch;ch = '\n'; //转义序列ch = '\10'; //十进制ch = '\012';//八进制ch = '\xa'; //十六进制printf("%c",ch);return 0;
} 5.编写一个程序,将用分钟表示的时间转换成以小时和分钟表示的时间。使用#define来创建一个代表60的符号常量。
#include #define i 60int main(void)
{int hour,min,min1;printf("请输入多少分钟:");scanf("%d",&min);hour = min / i;min1 = min % i; if(min 6.编写一个程序,此程序要求输入一个整数,然后打印出从输入(含)的值到比输入的值大10(含)的所有整数值(比如输入5,则输出5到15)。要求在各个输出值之间用空格、制表符或者换行符分开。
#include #define k 10int main(void)
{int i,l;printf("请输入一个整数:");scanf("%d",&i);l = k + i;for(i;i<=l;i++){printf("%d\t",i);}printf("\n");return 0;
} 7.编写一个程序,读入一个浮点数,并分别以小数形式和指数形式打印。结果保留两位有效数字。输出应如同下面格式(实际显示的指数位数可能因系统而不同): The input is 21.29 or 2.13e+01
#include int main(void)
{float i;printf("请输入一个浮点数:");scanf("%f",&i);printf("The input is %.2f or %.2e\n",i,i);return 0;
} 8.在程序中实现以下表达式,观察运算后a的值并解释原因。(设原来a=12)
(1) a += a a = 24 ---- a = a + a
(2) a -= 2 a = 10 ---- a = a - 2
(3) a *= 2+3 a = 60 ---- a = a * (2 + 3)
(4) a /= a+a a = 0 ---- a = a / (a+ a)
(5) a %= (n%2),n的值为5 ----a = a % (5%2) = 0
(6) a += a -= a *= a ----a+ = a- = a* = 12 >>> a+ = a- = 144 >>> a+ = 0 >>> a = 0 9.编写一个程序,该程序要求输入一个float型数并打印该数的立方值。使用你自己设计的函数来计算该值的立方并且将它的立方打印出来。main函数负责把输入的值传递给该函数。
#include float cube(float a)
{a = a*a*a;return a;
}int main(void)
{float i,j;printf("请输入一个float型数:");scanf("%f",&i);j = cube(i);printf("%.2f的立方数为:%f\n",i,j);return 0;
} 10.编写一个程序,此程序要求输入天数,然后将该值转换为星期数和天数。例如输入18,则要求输出:18 days
#include int main(void)
{int week,day,day1;printf("请输入天数:");scanf("%d",&day);week = day/7;day1 = day%7;printf("%d days are %d weeks,%ddays\n",day,week,day1);return 0;
} 11.编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数。
#include int main(void)
{int i,j,m;printf("请输入一个整数:");scanf("%d",&j);for(i=2; i<=j; i++){for(m=2; m 12.编写一个程序,用户输入某个大写字母,产生一个金字塔图案。例如用户输入字母D,则产生如下图案:
A
ABA
ABCBA
ABCDCBA
#include int main(void)
{char ch;int i,j,k;printf("请输入一个大写字母:");scanf("%c",&ch);i = ch - 'A' + 1;for(j=0; j 13.输入一个华氏温度,要求输出摄氏温度。要求结果保留2位小数。转换公式为:c = 5(F-32)/9
#include int main(void)
{float F,c;printf("请输入一个华摄氏度:");scanf("%f",&F);c = 5*(F-32)/9;printf("%.2f华氏温度的摄氏温度为:%.2f度\n",F,c);return 0;
} 14.编写一个函数,使其返回3个整型参数中的最大值。
#include int max(int a,int b,int c)
{int d; d = a>b?(a>c?a:c):(b>c?b:c);return d;
}int main(void)
{int a,b,c,s;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);s = max(a,b,c);printf("三个数中最大值是:%d\n",s);return 0;
} 15.编写一个函数my_power,用循环的方法实现返回一个float类型数的某个整数次幂(保留6位小数)。如调用my_power(3.14,-2)返回0.101424
#include float my_power1(float i,int j)
{float c;c = i;if(j>0){for(j; j>1; j--){i = i*c;}}else if(j == 0 && i != 0){i = 1;}else{for(j; j<-1; j++){i = i*c;}i = 1 / i;}return i;
}int main(void)
{float i,sum;int j;printf("请输入一个数和他的次幂:");scanf("%f%d",&i,&j);sum = my_power1(i,j);printf("%f的%d次幂为%f\n",i,j,sum);return 0;
}
----------------------------------------------------------------------------------
#include float my_power(float num, int pow)
{int i;float tmp = num;if(pow > 0){for(i=0; i 16.编写一个程序,将两个字符串连接起来,不要用strcat函数。
#include int main(void)
{char str1[14],str2[14];int i=0,j=0;printf("请输入第一个字符串:");scanf("%s",str1);printf("请输入第二个字符串:");scanf("%s",str2);while(str1[i] != '\0'){i++;}while(str2[j] != '\0'){str1[i] = str2[j];i++;j++;}str1[i] = '\0';printf("连接之后的字符串为:%s\n",str1);return 0;
} 17.编写一个函数Fibonacci(),要求程序输出第n项斐波那契数,n由用户输入。n 斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, … …
#include int F(int n)
{if(n == 1 || n == 2){return 1;}else{return F(n-2) + F(n-1);}
}int main(void)
{int i,j;printf("请输入一个数:");scanf("%d",&j);for(i=1; i<=j; i++){printf("%d ",F(i));}printf("\n");return 0;
} 18qx.编写一个函数,输入一个十进制数,输出对应的十六进制数。(不能用printf的%x格式说明符)
#include void fun(int i)
{int j=0,k,l;char a[]="0123456789abcdef",b[16];k=i;do{b[j++] = a[i%16];i = i/16;}while(i != 0);printf("十进制%d转换为十六进制数为:",k);for(l=j;l>=0;l--){printf("%c",b[l]);}printf("\n");
}int main(void)
{int i;printf("请输入一个十进制数:");scanf("%d",&i);fun(i);return 0;
}/** 15、编写一个函数,输入一个十进制数,输出对应的十六进制数。(不能用printf的%x格式说明符)* */
#include void fun(int a)
{char c[] = "0123456789ABCDEF";char data[10];int i;for(i = 0; ;i++){data[i] = c[a%16];a /= 16;if(a == 0)break;}printf("十六进制为:0x");while(i>=0){printf("%c",data[i]);i--;}printf("\n");}int main(void)
{int a;printf("请输入十进制数:");scanf("%d",&a);fun(a);return 0;
} 19.编写一个函数,求两个整数的最大公约数,用主函数调用这个函数并输出结果,两个整数由键盘输入。(提示:用辗转相除法求最大公约数)
#include int fun(int i,int j){int t;if(j<=0){printf("无意义!");}else{do{t = i%j;i = j;j = t;}while(j != 0);return i;}
}int main(void)
{int i,j,t;printf("请输入两个数值:");scanf("%d%d",&i,&j);t = fun(i,j);printf("最大公约数为:%d\n",t);return 0;
} 20.编写一个函数,返回一个double型数组中最大和最小值的差值,并在一个简单的程序中测试这个函数。
#include float fun(float* a,int j)
{int i;float min=a[0],max=a[0];for(i=0; ia[i]){min=a[i];}if(max 21.编写一个函数,把两个数组内的相应元素相加,结果存储到第3个数组内。也就是说,如果数组1具有值2, 4, 6, 8,数组2具有值1, 0, 3, 6,则函数对数组3赋值为3, 4, 9, 14。该函数的参数包括3个数组名和数组大小。并在一个简单的程序中测试这个函数。
#include void fun(int* str1,int* str2,int* str3,int n)
{int i;for(i=0; i 22.在x86平台下,分析以下代码的输出结果:
#include int main(void)
{int a[4] = {1, 2, 3, 4};
int *ptr1=(int *)(&a+1);
int *ptr2=(int *)((int)a+1);printf("%x, %x\n", ptr1[-1], *ptr2);return 0;
}Ptr1为数组指针&a+1,其a内存为16字节,在此基础上加1,为32字节的内存赋给ptr。
Ptr2为a的地址强转为long型然后在加1,在强转为long型指针。 23qx.一个有N个元素的整型数组,求该数组的各个子数组中,子数组之和的最大值是多少?
例如数组a[6] = {-2, 5, 3, -6, 4, -8, 6}; 则子数组之和的最大值是8 (即a[1] + a[2])。
#include
#include #define SIZE 7int max_sum(int a[], int size)
{int maximum = INT_MIN;int sum;int i, j, k;for(i=0; i maximum)maximum = sum;}}return maximum;
}int main(void)
{int a[SIZE] = {-2, 5, 3, -6, 4, -8, 6};printf("answer: %d\n", max_sum(a, SIZE));return 0;
}
24qx.编写一个程序,初始化一个3x5的二维double型数组,并利用一个基于变长数组的函数把该函数赋值到另一个二维数组,另外再写一个基于变长数组的函数来显示两个数组的内容。这两个函数应该能够处理任意的NxM数组。
#include
#include // enable the function rand()void func1(int row, int col, double (*target)[col], double source[][col])
{for(int i=row; i>0; i--){for(int j=col; j>0; j--){target[i-1][j-1] = source[i-1][j-1];}}
}void func2(int row, int col, double target[][col], double (*source)[col])
{printf("source:\n");for(int i=row; i>0; i--){for(int j=col; j>0; j--){printf("%f\t", source[i-1][j-1]);}printf("\n");}printf("target:\n");for(int i=row; i>0; i--){for(int j=col; j>0; j--)printf("%f\t", target[i-1][j-1]);printf("\n");}
}int main(void)
{int i, j;int row, col;printf("pls input the rows and cols of the source array:\n");if(scanf("%d%d", &row, &col) != 2){printf("rows and cols must be integers, Bye-bye!\n");return -1;}double source[row][col];//fill the source array with some random digitsfor(i=0; i|
25.编写一个函数,它返回函数自身被调用的次数,并在一个循环中测试之。
#include int fun(void)
{static int i;return ++i;
} int main(void)
{int i,j=0;for(i=0; i<5; i++){j=fun();}printf("%d\n",j);return 0;
} 26,用求多个整数的和及平均值----do_while语句实现
#include
int main(void)
{int sum = 0; //和 int cnt = 0; //整数个数 int retry; //判断是否继续do{int t;printf("请输入一个整数:");scanf("%d",&t);sum = sum + t;cnt = cnt + 1;printf("是否继续? //while语句练习
27,递增显示从0到输入的正整数为止的各个整数
#include
int main(void)
{int i,n;printf("请输入一个正整数:");scanf("%d",&n);i = 0;while(i <= n)printf("%d ",i++); //i的值在显示之后递增printf("\n");
return 0;
} 28,编写一段程序,按照升序显示出小于输入值的所有正偶数
#include
int main(void)
{int i,n;printf("请输入一个正整数:");scanf("%d",&n);i = 0;while(i <= n){i = i + 2;if(i < n) //应先对递增后的值进行判断,看是否越界 printf("%d ",i); }printf("\n");return 0;
} 29,编写一段程序,使之交替显示+和-,总个数等于所输入的整数值
#include
int main(void)
{int num;int i=0;printf("正整数:");scanf("%d",&num);while (i 30,逆向显示正整数,如:输入123,打印321
#include
int main(void)
{int n;do{printf("请输入一个正整数:");scanf("%d",&n);if(n <= 0)puts("请不要输入非正整数。");}while(n <= 0);printf("该整数逆向显示的结果是 ");while(n > 0){printf("%d", n % 10);n /= 10;}puts("。 ");return 0;
} //for语句练习
31,编写一段程序,根据输入的整数,循环显示1234567890,显示的位数和输入的整数值相同
#include
int main(void)
{int i,j,n;j=1;printf("请输入一个整数:");scanf("%d",&n);for(i=0;i9)j-=10;}printf("\n");return 0;
} 32,编写一段程序,显示出身高和标准体重的对照表。注:显示的身高范围和间隔由输入的整数值进行控制,标准体重精确到小数点后两位。
#include
int main() {int beginHigh = 0, endHigh = 0;float weight = 0;int margin = 0;printf("开始数值(cm):");scanf("%d", &beginHigh);printf("结束数值(cm):");scanf("%d", &endHigh);printf("间隔值(cm):");scanf("%d", &margin);for (int i = beginHigh;i <= endHigh; i+=margin) {weight = (i - 100)*0.9; //这是一个计算标准体重的公式 printf("%d cm\t\t%.2f\n", i, weight); // \t代表制表符,相当于按下一次Tab键 }return 0;
} 33,显示输入的整数值的所有约数
#include
int main(void)
{int i,n;printf("整数值:");scanf("%d",&n);for(i = 1;i <= n;i++)if(n % i == 0)printf("%d ",i);putchar('\n');return 0;
} 34,编写一段程序,输入一个整数值,显示该整数值个' * '。每显示5个就进行换行。
#include
int main()
{printf("请输入整数:");int a;scanf("%d",&a);int b=0;for(int i=0;i 35,显示九九乘法表
#include
int main(void)
{int i,j;for(i = 1;i <= 9;i++){for(j = 1;j <= 9;j++)printf("%3d",i * j);putchar('\n');}return 0;
} 36,编写一段程序,为九九乘法表增加横纵标题
#include
int main()
{int i, j ;//打印第一行printf(" |") ;for(i = 1; i <= 9; i++){printf(" %d", i) ;}printf("\n") ;//打印第二行for(i = 1; i <= 32; i++)printf("-") ;printf("\n") ;//开始打印99乘法表,每行开头要有行号for(i = 1; i <= 9; i++)//行{printf(" %d |", i) ;for(j = 1; j <= 9; j++)//列{printf(" %2d", i*j) ;}printf("\n") ;}return 0 ;
} 37,画一个长方形
#include
int main(void)
{int i,j;int height,width;puts("让我们来画一个长方形。");printf("高:"); scanf("%d",&height);printf("宽:"); scanf("%d",&width);for(i = 1;i <= height;i++) { //长方形有height行 for(j = 1;j <= width;j++) //每行显示width个 putchar('*');putchar('\n'); //换行}return 0;
} 38,显示直角在左下方的等腰直角三角形
#include
int main(void)
{int i,j,len;puts("直角在左下方的等腰直角三角形。");printf("边长:");scanf("%d",&len);for(i = 1;i <= len;i++){for(j = 1;j <= i;j++)putchar('*');putchar('\n');}return 0;
} 39,显示直角在右下方的等腰直角三角形
#include
int main(void)
{int i,j,len;puts("直角在左下方的等腰直角三角形。");printf("边长:");scanf("%d",&len);for(i = 1;i <= len;i++){for(j = 1;j <= len-i;j++)printf("%c",' ');for(j = 1;j <= i;j++)printf("%c",'*');printf("\n");}return 0;
} 40,显示直角在左上方的等腰直角三角形
#include
int main()
{int i,j,len;puts("直角在左下方的等腰直角三角形。");printf("边长:");scanf("%d",&len);for (int i = 1; i<=len; i++) {for (int j = 1; j <=len-i+1; j++) {putchar('*');}putchar('\n');}return 0;
} 41,显示直角在右上方的等腰直角三角形
#include
int main()
{int i,j,len;puts("直角在左下方的等腰直角三角形。");printf("边长:");scanf("%d",&len);for (int i = 1; i<=len; i++) {for (int j = 1; j <=i; j++) {putchar(' ');}for (int j=1; j<=len-i+1; j++) {putchar('*');}putchar('\n');}return 0;
} 42,编写一段程序,输入一个整数,显示出输入整数层的金字塔形状
*
***
*****
*******
*********
#include "stdio.h"
int main(int argc, char const *argv[])
{int n;puts("让我们来描绘一个金字塔。");printf("金字塔有几层:"); scanf("%d",&n);for (int i = 1;i<=n; i++) {for (int j = 1; j<=n-i; j++) {putchar(' ');}for (int j=1;j<=i ; j++) {putchar('*');}for (int j=1; j 43,金字塔变形(1)
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
#include
int main()
{int i,j,n;puts("让我们来描绘一个金字塔。");printf("金字塔有几层:"); scanf("%d",&n);for(i=1;i<=n;i++){for(j=0;j 44,金字塔变形(2)
1
121
12321
1234321
123454321
#include
int main()
{int i,j,n;puts("让我们来描绘一个金字塔。");printf("金字塔有几层:"); scanf("%d",&n);for(i=1;i<=n;i++){for(j=0;j0;j--)printf("%d",j);printf("\n");}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
