哈工大c语言练习题
- 格式:docx
- 大小:14.30 KB
- 文档页数:16
c语言练习题及答案C语言练习题及答案C语言作为一种通用的高级编程语言,被广泛应用于系统软件、应用软件、驱动程序、网络和嵌入式固件的开发。
为了帮助大家更好地掌握C语言的基础知识,下面将给大家提供一些C语言练习题及答案,希望对大家的学习有所帮助。
1. 编写一个C程序,要求用户输入两个整数,然后输出它们的和。
```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("它们的和是:%d\n", sum);return 0;}```2. 编写一个C程序,计算并输出1到100之间所有奇数的和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 != 0) {sum += i;}}printf("1到100之间所有奇数的和是:%d\n", sum);return 0;}```3. 编写一个C程序,判断用户输入的整数是奇数还是偶数,并输出相应的信息。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数\n", num);} else {printf("%d是奇数\n", num);}return 0;}```通过以上几道C语言练习题,我们可以加深对C语言基础知识的理解,提高编程能力。
三、程序改错题(共6个错,每找出一个错给2分,多找出不加分,共10分。
)
[点击查看答案]答:*p=100; //该句错误,不可借助p对它所指向的目标进行重新赋值
*p=200; //该句错误,指针p所指向的常量不可进行修改
答:
p="xyz";//该句错误,不可再使指针常量指向另外一个地址p++;//该句错误,指针常量不可修改
答:Before Swap a=1,b=2
After Swap a=2,b=1
答:6904
答:
1 li lin M 89 1 li lin M 89 1 li lin M 89
4.
分析下列程序写出运行成果
答:1 lilin M 18
2 sum M 19
3 zhao M 20
答:1 lilin M 182 sum M 193 zhao M 20
答: 1 lilin M 18 2 sum M 19 3 zhao M 20
答:
3 zhao M 20
[点
击查看答案]答:9 19
答:
10
20
[点击查看答案]答:
100
132
200
332
五、编程题(2道题,共20分。
)
1.输入一个年号,判断是否为闰年,如果是则输出“yes”,否则输出“Not”。
分析:只要满足下列两个条件之一者,即是闰年。
①年号能被4整除,但要排除同时能被100整除;
②年号能被400整
除。
考试时间120 分钟满分 70班号学号姓名题号一二三四五总分实验( 20)平时( 10)总成绩分数一、填空题.(共20分,每空1分)1.面向对象地程序设计方法(可用各种语言实现,如C++ 、 Java、C#等)具有三大特性 ,它们分别是,,.2.已知 m = 4, 执行 m++。
后 ,表达式地值是,m地值是,执行 ++m 。
后 ,表达式地值是,m地值是.3.已知 m = 3, n = 2, 则执行语句 m > n ? m++ : ++n,m++,m+n 。
后 ,表达式地值是.4.循环语句 while(int i = 0){ i-- 。
} 执行地循环次数是次;语句for(int i(0), j(0)。
i = j = 1 。
i++, j--) {; }执行地循环次数是次.5.为了使函数能够返回两个或者更多地值,可将形参设置为下列两种方式,它们分别是或,如果希望实参不被修改 ,那么需要对形参使用关键字限制 .6.定义在类体外地函数,如果希望成为内联函数,则必须在类体内地声明中用关键字标识;运算符地重载必须用关键字标识 .7.在 C++ 中 ,类地继承方式有三种 ,需要用关键字、和来定义 .默认继承方式为.8.在 C++ 中 ,定义友元类或者友元函数必须使用关键字.二、判断题,正确地请打√,错误地请打×.(共10分,每题1分)1.编译 C++ 源程序地过程中 ,出现了警告错误 ,也可以生成可执行文件 .()2. C++ 中 ,使用 #define 定义地常量必须给出类型说明,而使用const 给出地常量不用给出类型说明 .()3.表达式地值地类型只取决于运算符,与操作数无关 .()4.break 语句可以出现在各种不同循环语句地循环体中,continue 语句只能出现在循环体中 .()5.函数没有返回值时,可以不加任何类型地说明符;任何一个函数都可以设置默认参数,但是不允许将一个函数地所有参数设置为默认参数.()6.指向函数地指针可以作为函数参数;使用数组名作函数参数时,实参数组与形参数组是共享内存单元地 .()7.结构与联合地差别在于结构中地每个成员都有自己地内存地址,且都是不相同地 ,而联合中地所有成员是共享内存块地,且内存块地大小与成员中地最大内存块相同.()8.如果类地一个成员函数只存取该类地静态数据成员,可将该成员函数说明为静态成员函数;友元类地所有成员函数都可以对该类中地私有成员进行存取操作.()9.类型转换函数是类地成员函数,它是用来进行强制类型转换地,它不能定义为友元函数 ,也不能定义为静态地成员函数;带有一个参数地构造函数具有类型转换地作用.()10. 在公有继承中,派生类地对象不可以访问基类中地保护成员;在私有继承中,派生类地对象不可以访问基类中地公有成员;在保护继承中,派生类可以访问基类中地保护成员.()三、请分析下列程序 ,并回答问题 .(共 16分)1、给出下列程序地输出结果,并说明其功能 .2、给出下列程序地输出结果,并说明其功能 .#include <iostream.h>#include <iostream.h>void swap( int&,int& ) 。
1.**打印Hello World**练习:编写一个C程序,打印"Hello,World!"到屏幕上。
#include<stdio.h>int main(){printf("Hello,World!\n");return0;}2.**计算两个整数的和**练习:编写一个程序,接受两个整数,然后计算它们的和并打印结果。
#include<stdio.h>int main(){int a=5,b=7;int sum=a+b;printf("Sum:%d\n",sum);return0;}3.**判断奇数或偶数**练习:编写一个程序,接受一个整数,然后判断它是否为奇数或偶数。
#include<stdio.h>int main(){int num=10;if(num%2==0){printf("%d is even.\n",num);}else{printf("%d is odd.\n",num);}return0;}4.**计算阶乘**练习:编写一个程序,计算给定整数的阶乘。
#include<stdio.h>int main(){int n=5;int factorial=1;for(int i=1;i<=n;i++){factorial*=i;}printf("Factorial of%d is%d\n",n,factorial);return0;}5.**反转字符串**练习:编写一个程序,接受一个字符串,然后反转它并打印出来。
#include<stdio.h>#include<string.h>int main(){char str[]="Hello,World!";int len=strlen(str);for(int i=len-1;i>=0;i--){printf("%c",str[i]);}printf("\n");return0;}6.**检查素数**练习:编写一个程序,判断一个整数是否为素数。
C语言基础练习100题含标准答案1. 编写一个C语言程序,要求输出"Hello, World!"#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}2. 编写一个C语言程序,要求输出两个整数的和。
#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("两个整数的和为:%d\n", sum);return 0;}3. 编写一个C语言程序,要求输出一个整数的平方。
#include <stdio.h>int main() {int num, square;printf("请输入一个整数:");scanf("%d", &num);square = num * num;printf("该整数的平方为:%d\n", square);return 0;}4. 编写一个C语言程序,要求输出1到10的所有整数。
#include <stdio.h>int main() {int i;for (i = 1; i <= 10; i++) {printf("%d ", i);}printf("\n");return 0;}5. 编写一个C语言程序,要求输出1到10的所有整数的和。
#include <stdio.h>int main() {int i, sum = 0;for (i = 1; i <= 10; i++) {sum += i;}printf("1到10的所有整数的和为:%d\n", sum);return 0;}6. 编写一个C语言程序,要求输入一个字符串并输出该字符串。
哈工大2003年春季学期C语言考试题参考答案一、填空题:(24分)(1) 将变量a的地址存入 (9) float a[10]指针变量p中(2) 自动变量 (10) j<10(3) 7 (11) j<=8(4) &x,&y (12) k<=9-j(5) float *x,*y (13) a[k]>a[k+1](6) *x (14) a[k]=a[k+1](7) *x=*y (15) j<=9(8) *y=temp (16) j%5==0二、单选题:(20分)1、B2、A3、 D4、 B5、 D6、D7、D8、D9、A 10、A三、判断题:(16分)1、√2、√3、4、√5、 6、 7、√ 8、四、写出程序运行结果(20分)1、 a=8,x=1252、 adb=1,y=1 abcdefghimnohino3、04、a=61 a=723五、编程:1、main(){int a[3][4], i,j, max, m,n;for (i=0; i<3; i++){for(j=0 ;j<4 ;j++)scanf("%d",&a[n]);}max = a[0][0];m= n = 0;for (i=0; i<3; i++){for(j=0 ;j<4 ;j++)if (max<a[i][j]){max = a[i][j];m = i ;n=j ;}}printf("max=%d\n",max);printf("m=%d\tn=%d\n",m,n);2、#include <stdio.h>main(){int x,n,tt,f1(int int);scanf(“%d,%d”,&x,&n);tt=f1(x,n);printf(“%d”,tt);}int f1(int x,int y){int temp=1,I;for(I=1;I<=y;I++)temp*=x;return(tmp);}哈工大2002/2003学年秋季学期 C语言试题答案一、选择题1、D,2、B,3、A,4、B,5、A,6、A,7、D,8、D,9、B, 10、B二、给出下列程序的运行结果1、17,1022、13.7000003、d=204、135、s=12346、10三、阅读程序,在标有下滑线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
哈理工c语言期末试题及答案一、选择题(每题2分,共20分)1. 下列选项中,不属于C语言数据类型的是()。
A. intB. floatC. stringD. double答案:C2. C语言中,用于定义结构体的关键字是()。
A. structB. unionC. enumD. typedef答案:A3. 下列关于C语言函数的描述,错误的是()。
A. 函数可以没有返回值B. 函数可以有多个返回值C. 函数可以有默认参数D. 函数可以有任意数量的参数答案:C4. 在C语言中,用于声明数组的语法是()。
A. int arr[5];B. int arr[];C. int [5]arr;D. int arr=5;答案:A5. 下列关于指针的描述,正确的是()。
A. 指针可以存储任何类型的数据B. 指针可以存储变量的地址C. 指针本身没有数据类型D. 指针不能作为函数的参数答案:B6. 在C语言中,用于实现循环结构的关键字是()。
A. forB. whileC. do-whileD. 以上都是答案:D7. 下列关于文件操作的描述,错误的是()。
A. 文件操作需要使用文件指针B. 文件指针是指向FILE结构的指针C. 文件操作只能用于文本文件D. 文件操作包括打开、关闭、读写等操作答案:C8. C语言中,用于定义枚举类型的关键字是()。
A. enumB. unionC. structD. typedef答案:A9. 下列关于预处理命令的描述,正确的是()。
A. #define可以定义宏B. #include可以包含头文件C. #define和#include都可以定义宏D. #define和#include都可以包含头文件答案:A10. 在C语言中,用于定义联合体的关键字是()。
A. structB. unionC. enumD. typedef答案:B二、填空题(每题2分,共20分)1. 在C语言中,表示逻辑“与”的运算符是____。
C语言编程练习题与答案选择结构(一)C语言编程练习题与答案选择结构C语言是一门应用广泛的编程语言,初学者在学习时,无论是学习基础语法还是进行编程实践,都需要进行大量的练习。
为了帮助初学者巩固所学内容,以下列举了几个C语言编程练习题,并提供了选择结构的答案。
本文将针对此类练习题进行讲解。
1. 判断一个整数是否是偶数,是则输出“Yes”,否则输出“No”。
解析:根据题目要求,我们可以使用C语言中的取模(%)运算符。
如果整数a%2的结果等于0,则a是偶数;反之则不是。
具体的代码如下:```#include <stdio.h>int main(){int a;printf("请输入一个整数:");scanf("%d",&a);if(a%2==0)printf("Yes\n");elseprintf("No\n");return 0;}```2. 输入两个整数a和b,比较它们的大小,输出其中较大的数。
解析:根据题目要求,我们可以使用if-else选择结构。
首先判断a 是否大于b,如果是,则输出a;否则输出b。
具体的代码如下:```#include <stdio.h>int main(){int a,b,max;printf("请输入两个整数:");scanf("%d %d",&a,&b);if(a>b)max=a;elsemax=b;printf("较大的数是:%d",max);return 0;}```3. 对于任意一个三位数,求它的各个位上的数字之和。
解析:根据题目要求,我们可以使用取模运算符和整除运算符。
用a%10可以表示a的个位数字,用(a/10)%10可以表示a的十位数字,用a/100可以表示a的百位数字。
求用户输入的两个数的商,程序运行时,以如下格式输入数据: Input two integers:4 2↙ 请改正程序中的错误,使它能得出正确的结果。 #include main() { int a, b, c; printf("Input two integers:"); scanf("%d,%d", &a, &b); c = a\b; printf("The quotient of a and b is :%d", c); } # include int main () { int a,b,c; printf ("Input two integers:"); scanf ("%d %d",&a,&b); c=a/b; printf ("The quotient of a and b is :%d\n",c); return 0; }
使用const常量定义圆周率pi=3.14159,编程从键盘输入圆的半径r,计算并输出圆的周长和面积。输出的数据保留两位小数点。 输入格式要求:"%lf" 提示信息:"Input r:" 输出格式要求: "printf WITHOUT width or precision specifications:\n" "circumference = %f, area = %f\n" "printf WITH width and precision specifications:\n" "circumference = %7.2f, area = %7.2f\n" 程序运行示例如下: Input r:5.3 printf WITHOUT width or precision specifications: circumference = 33.300854, area = 88.247263 printf WITH width and precision specifications: circumference = 33.30, area = 88.25 #include int main() { const double PI=3.14159; double r; printf("Input r:"); scanf("%lf", &r); printf("printf WITHOUT width or precision specifications:\n"); printf("circumference = %f, area = %f\n",2*PI*r,PI*r*r); printf("printf WITH width and precision specifications:\n"); printf("circumference = %7.2f, area = %7.2f\n",2*PI*r,PI*r*r); return 0; } 写一个程序,将接收的华氏温度转换为对应的摄氏温度。程序应显示如下的提示信息: Please input fahr: 然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。 程序使用如下的公式完成转换:摄氏温度 = 5.0 *(华氏温度 – 32.0) / 9.0 输入格式要求:"%lf" 提示信息:"Please input fahr: " 输出格式要求:"The cels is: %.2f"
#include #include int main() { double f; double c; printf("Please input fahr: "); scanf("%lf",&f); c=5.0*(f-32.0)/9.0; printf("The cels is: %.2f",c); return 0; } 从键盘输入任意的字符,按下列规则进行分类计数。 第一类:‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 第二类:‘+’, ‘-’, ‘*’, ‘/’, ‘%’, ‘=’ 第三类:其它字符。 输出格式要求:"class1=%d, class2=%d, class3=%d\n" 程序运行示例如下: ghdf^%^#$^&(+-//+_8*(\ class1=1, class2=7, class3=14 #include int main() { char ch; int a = 0,b = 0,c = 0; while ((ch = getchar()) != '\n') /*当读入的字符不是换行符时*/ { if (ch >= '0' && ch <= '9') /*判断是否是数字*/ ++a; else if (ch == '+'||ch == '-'||ch == '*'||ch == '%'||ch == '/'||ch == '=') /*判断是否是巴拉巴拉*/ ++b; else /*是其它字符*/ ++c; } printf("class1=%d, class2=%d, class3=%d\n",a,b,c); return 0; } 要求: 输入为一个数n; 输出为1~n的奇数的阶乘之和; 要求使用函数实现 输入输出示例(第一行为输入,第二行为输出): 5 127 #include long Fact(int n) { int i; long result=1; for(i=1;i<=n;i++) { result*=i; } return result; } int main() { int m,j,sum; long ret; scanf("%d",&m); sum=0; for(j=1;j<=m;j=j+2) { ret=Fact(j); sum=sum+ret; } printf("%d\n",sum); return 0; }
键盘任意输入一下整数n,编程计算输出1~n之间的素数之和。 要求:判断素数用函数实现。 说明:素数是不能被1和它本身以外的其它整数整除的正整数(负数、0和1都不是素数) 输入输出示例(第一行为输入,第二行为输出): 10 17 #include #include int ss(int n) { int i; if(n<2) return 0; for (i=2; i<=(int)sqrt((double)n); i++) if (n%i==0) return 0; return 1; } int main(void) { int i,sum=0,n; scanf("%d",&n); for (i=1; i<=n; i++) if(ss(i)) sum+=i; printf("%d\n",sum); return 0; } 从键盘多次输入不同的整数n,编程计算输出1~n之间的素数之和。 要求: 1)判断素数调用函数实现; 2)用循环结构,输入5次不同的整数。 输入输出实例(奇数行为输入,偶数行为输出): 25 100 17 58 28 100 37 197 100 1060 #include #include int ss(int n) { int i; if(n<2) return 0; for (i=2; i<=(int)sqrt((double)n); i++) if (n%i==0) return 0; return 1; } int main(void) { int i,sum=0,n; int counter=0; do{ scanf("%d",&n); counter++; for (i=1; i<=n; i++) if(ss(i)) sum+=i; printf("%d\n",sum); sum=0; }while(counter<=4); return 0; }
(请用一维数组完成)某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上 5, 然后用和除以 10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。 输入格式要求:"%d" 提示信息:"Input a 4 digits number\n" 输出格式要求:"%d" 程序运行示例如下: Input a 4 digits number 1234 9876 #include int main () { int Digit[4]; int n; int i; int m; printf ("Input a 4 digits number\n"); scanf("%d",&n); Digit[0]=n/1000; Digit[1]=(n-1000*Digit[0])/100; Digit[2]=(n-Digit[0]*1000-Digit[1]*100)/10; Digit[3]=n-Digit[0]*1000-Digit[1]*100-Digit[2]*10; for(i = 0;i <=3;i++) { Digit[i]=(Digit[i]+5)%10; } m= Digit[0]+10*Digit[1]+100*Digit[2]+1000*Digit[3]; printf("%d",m); return 0; } (请用二维数组完成)从键盘为3*3的矩阵输入数据,找出主对角线上最大的元素,以及所在的行号。(第一行行号为0) **输入格式要求:"%d" **输出格式要求:"max=%d ,row=%d" 屏幕输入数据,输出最终结果(每个数字之间空一格): 程序运行示例如下: 1 2 3 4 5 6 7 8 9 max=9 ,row=2 # include int main () {