单片机C语言作业及上机习题(仅供参考)
2. main()
{ int a=5,b=7,c=-1;
float x=67.8564,y=-789.124;
char c=‘A’;
long n=1234567;
unsigned u=65535;
printf(“%d%d\n”,a,b);
printf(“%3d%3d\n”,a,b);
printf(“%f,%f\n”,x,y);
printf(“%-10f%-10f\n”,x,y);
printf(“%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n”,x,y,x,y,x,y);
printf(“%e,%10.2e\n”,x,y);
printf(“%c,%d,%o,%x\n”,c,c,c,c);
printf(“%ld,%lo,%x\n”,n,n,n);
printf(“%u,%o,%x,%d\n”,u,u,u,u);
printf(“%s,%5.3s\n”,”COMPUTER”,”COMPUTER”);}
3. 假设下面的例子都是完整程序的一部分,那么他们每一个将会输出什么?
a. printf("Baa Baa Black Sheep.");
b. printf("Have you any wool?\n");
c. printf("Begone!\nO creature of lard!");
d. printf("What?\nNolnBonzo?\n");
e. int num;num = 2;
f. printf("%d + %d = %d", num, num, num + num);
4.加载,编译并运行下面的程序。显示输出界面然后回答下面的问题。
#include
main()
{
char ch;
int x;
float y;
double z;
ch = ‘A’;
printf("ch = %c and its ascii value is %d. What is ASCII I wonder?\n", ch, ch);
x = 10;
printf("x = %d\n", x);
y = 3.1415926;
printf("y = 2%f\n", y);
z = 4.75E5;
printf("z = %lf\n", z);
return(0);
}
1. 字符的A的ASCII码是多少?
2. “%f”默认情况下小数点后面有几位数字?
3. 程序中的字符被指定的值为’A’,为什么不是“A”?
4. 改变程序使它以10个字符位宽
Answer:
ch = A and its ascii value is 65. What is ASCII I wonder?
x = 10y = 3.141593z = 475000.000000
ch = A and its ascii value is 65. What is ASCII I wonder?
x = 10y = 3.141593z = 475000.000000
3.问答题
(1)C语言的基本数据类型有几种,分别是什么,并指出各种数据类型的关键字?
(2)描述C语言中标识符的组成
(3)常量和变量的区别是什么?
(4)在程序中如何使用变量?
(4.选择题
(1)合法的字符常量是。A)‘\t’B) “A” C)‘a’D)’\x32’
(2)合法的字符常量是。A)‘\084’B) ‘\84’ C)‘ab’D)’\x43’
(3)是C语言提供的合法的数据类型关键字。A)Float B)signed C)integer D)Char (4)在以下各组标识符中,合法的标识符是。
A) A)B01 B)table_1 C)0_t D)k%
B) A)Fast_ B)void C)pbl D)
C) A)xy_ B)longdouble C)*p D)CHAR
D)A) sj B)Int C)_xy D)w_y23
(5)属于合法的C语言长整型常量的是。A)5876273 B)0L C)2E10 D)(long)5876273 (6)下面选项中,不是合法整型常量的是A)160 B)-0xcdg C)-01 D)-0x48a
第三次课熟悉scanf()函数的使用:
1.用下面的scanf()函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’;
main()
{int a,b;
float x,y;
char c1,c2;
scanf(“a=%d b=%d”,&a,&b);
scanf(“ x=%f y=%e”,&x,&y);
scanf(“ c1=%c c2=%c”,&c1,&c2);
printf(“a=%d b=%d”,a,b);
printf(“ x=%f y=%e”,x,y);
printf(“ c1=%c c2=%c”,c1,c2);}
a=3 b=7 x=8.5 y=71.82 c1='A' c2='a'
a=3 b=7 x=8.500000 y=7.18200e+01c1=' c2=2
2.加载,编译并运行下面的程序然后回答下面的问题。
#include
main()
{
int user_age;
char user_name[51];
/* Get the users name */
printf("Enter your name :");
scanf("%s", user_name);
/* Get the users age */
printf("Enter your age in years :");
scanf("%d", &user_age);
/* Print out their name and age in days */
printf("G’day %s, you are %d days old\n", user_name,
user_age*365);
return(0);
}
1. 存储用户名的变量名是什么?
2. 改写这个程序使他可以用一个单独的变量以天的形式存储用户的年龄。
3.使用 scanf() 读取多行输入
#include
main()
{
int user_age;
char user_name[51];
/* Get the users name and age*/
printf("Enter your name followed by your age in years (eg fred 23) :");
scanf("%s %d", user_name, &user_age);
/* Print out their name and age in days */
printf("G’day %s, you are %d days old\n", user_name, user_age*365);
return(0);
}
1. 当你在回答问题时颠倒了年龄和姓名会出现什么情况?
2. 当你在代码中省去了&时会出现什么情况?
4.编程题
(1)已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序来。
(2)若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
a= 3 b= 4 c= 5
x=1.200000,y=2.400000,z=-3.600000
x+y= 3.60 y+z=-1.20 z+x=-2.40
u= 51274 n= 128765
c1=’a’ or 97(ASCII)
c2=’b’ or 98(ASCII)
(3)输入一个华氏温度,要求输出摄氏温度,公式为:
5
(32)
9
C F
=-,取两位小数。
5.请判断以下表达式是否正确,若正确,写出表达式的值;若不正确,写出出错原因。
各变量的类型说明如下:
int i=8, j=3, k, a, b;
unsigned long w=5, u;
double x=1.42 , y=5.2 , t ;
(1)k=i++ (2) (int)x+0.4 (3) w+=-2 (4) y+=x++ (5) i/=j+12
(6) k=--i (7) f=3/2*(t=30.0-10.0) (8) k=(a=2,b=3,a+b)
(9) a+=a-=(b=4)*(a=3) (10) a=2*a=3
(11) u=65535, j=-1,u=u+j (12) ++(i+j) (13) 2%(-3) (14) -2%(-3)
6. 求以下表达式的值,假设所有变量都为整型。
(1)(a=b=4,a+1,b+1,a+b)(2)(a=2,b=5,a>b?a++:b++,a+b)(3)(x=8,x%=x+5)
(4)30 % 6 / 2
7.写出下面各逻辑表达式的值。设:a=3,b=4,c=5.
(1)a+b>c&&b==c(2)a ||b+c&&b-c(3)!(a>b) && !c || 1 (4)!(x=a)&&(y==b)&&0
(5)!(a+b) + c –1 && b + c/2
第四次课
1.if语句应用
(1)加载,编译并运行下面的程序,先使用一个正整数,然后再使用一个负数。有什么不同?
#include
main()
{int x;
printf("Enter a number between -10 and +10 : ");
scanf("%d", &x);
if (x > 0) {
printf("\nYour number is positive\n");
}
return(0) +your number is positive
} _ kongde
(2)使用 if语句避免除0
#include
main()
{
float x, y;
printf("Enter a number to be inverted : ");
scanf("%f", &x);
If(x!=0)
{y = 1/x;}
printf("The inverse of %f equals %f\n", x, y);
if(x==0)
printf("the number is impositive");
return(0);
}
1. 当你输入数字0时结果为多少?Mei you jie guo
2. 增加一个if语句使它只有当if x不等于0时进行计算。
3. 现在你输入0会出现什么情况?The inverse of 0.000000 equals 0.000000
4. 改进程序使之可以当输入数字0时打印出警告信息。
(3)编写 if语句
写一个程序用来计算电阻上的功率。功率大小等于电阻上的电压值乘以流过电阻的电流值。完成计算后,使用一个if 语句判断功率是否低于0.5 瓦特。如果低于0.5 瓦特则输出“Okey to use half watt resistor”,否则输出“haff watt registor will
not be okey”。下面是程序的开始部分,请添加完成if
#include
main()
{
float power, voltage, current;
printf("Enter the voltage : ");
scanf("%f", &voltage);
printf("Enter the current : ");
scanf("%f, ¤
return(0);
}
如果功率小于0.5 瓦特,屏幕输出应该如下所示:
Enter the voltage : 5
Enter the current : 0.002
okay to use half watt resistor.
如果功率大于0.5瓦特:
Enter the voltage : 5
Enter the current : 200
half watt resisitor will not be okay.
2. 编程练习:
(1)有三个整数a,b,c,由键盘输入,输出其中最大的数。
(2)编程输入整数a和b,若大于100,则输出百位以上的数字,否则输出两数之和。(3)有一函数:
写一个程序,输入x的值,输出y值。
(4)写一段程序计算两个并联电阻的阻值,使你的程序检查是有短路的(0欧姆)将导致0 作为被除数,使用一个if语句或者三目运算避免这种情况(使用三目运算计算及检查是否除0)。提示: Rt = 1 / (1/R1 + 1/R2);
你的输出应该如下所示:
Enter the value of resistor 1 : 45
Enter the value of resistor 2 : 56
45.0 ohms in parallel with 56.0 ohms gives 24.95 ohms
假如有一个电阻阻值为0的话,结果将如下所示:
Enter the value of resistor 1 : 0
Enter the value of resistor 2 : 45
0.0 ohms in parallel with 45.0 ohms gives 0.00 ohms
第5次课switch语句应用
(1)加载,编译并运行下面的程序,并回答问题。加载,编译并运行下面的程序,将文件保存为switch-01.c
#include
main()
{int num1, num2, ans;
char arithOp;
ans=0;
printf("Enter number 1 --> ");
scanf("%d", &num1);
printf("Enter number 2 --> ");
scanf("%d", &num2);
printf("Enter an operator (+, - or *) --> ");
fflush(stdin);
scanf("%c", &arithOp);
switch (arithOp) {
case ‘+’:ans = num1 + num2; break;
case ‘-’:ans = num1 - num2; break;
case ‘*’:ans = num1 * num2; break;
}
printf("\n%d %c %d = %d", num1, arithOp, num2, ans);
fflush(stdin);
getchar();
return(0);}
1. 尝试输入一个不匹配case语句的操作符,会发生什么?
2. 将程序保存为
switch-02.c并为“ans”添加乘(*)和除(/)的算法。3. 添加一个default语
句来处理输入的运算符不符合case情况。4. 添加程序处理除数为零的情况。
(2)加载,编译并运行下面的程序。
#include
main()
{int choice;
printf("How many stars (1 to 10) do you want? ");
scanf("%d", &choice);
switch (choice) {
case 10:
printf("*");
case 9:
printf("*********");
break;
case 8:
printf("*");
case 7:
printf("*");
case 6:
printf("*");
case 5:
printf("*****");
break;
case 4:
printf("*");
case 3:
printf("*");
case 2:
printf("*");
case 1:
printf("*");
break;
default:
printf("The number you asked for is out of range\n");
}
return(0);
}
1. 打印9颗星和8颗星是不同的。描述这两种方法。
2. 编辑这段程序,使之工作在没有break语句的情况下。
(3)任务1:完成下面的程序,使用if/else语句,判断输入的数是正数还是负数
任务2:完成下面的程序,使用switch语句,判断输入的数是正数还是负数,并且要处理输入的数越界的情况。
#include
main()
{
int num;
printf("Program indicates whether number is +ve or -ve\n");
printf("Enter a number between -5 and +5 :");
scanf("%d", &num);
/* 添加语句 */
return(0);
}
(4)本程序是从键盘输入一个10进制数,根据用户要求输出这个数对应的16进制、8进制或者10进制数。例:若用户输入“H”,则输出这个数的16进制数。
任务1:添加if语句完成程序功能
任务2:添加switch语句完成程序功能,注意对输入无效数制的处理。比如输入:X时,作何处理。
#include
main()
{
int num;
char choice;
printf("Program prints oct al or hex equivalent of numbers
entered\n");
printf("Enter an integer : ");
scanf("%d", &num);
printf("Do you want Decimal, Octal or Hex (H, D, O) : ");
fflush(stdin);
choice = getchar();
/* 添加程序 */
return(0);
}
(5)给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。(6)从键盘输入三个数,判断这三个数是否能构成三角形,如果是,输出“the three numbers could be the sides of a triangle”,如果不是输出“the three numbers could’t the sides of a triangle”;并判断这个三角形是不是直角三角形,如果是,输出“the numbers could be the sides of a right angle triangle”,如果不是,输出“the numbers could’t the sides of a right angle triangle”。第6次课循环
1. 写一个程序让用户输入一个1~12之间的数,程序将会输出这个数的乘法表。
使用一个循环进行计算并输出一行,屏幕输出应该如下所示:
Enter a number between 1 and 12: 5
5 times multiplication table
1 x 5 = 5
2 x 5 = 10
3 x 5 = 15
4 x
5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
10 x 5 = 50
11 x 5 = 55
12 x 5 = 60
2. 添加循环语句,计算并输出1~20之间的偶数的和。
3. Break 语句的使用
为程序添加语句,使得输入的数据在1~10之间时,退出循环,否则输出“the number is out of range ”
4.任务1:添加程序,使得其在从注释A 开始到注释C 之间循环,并提示用户输入“0”退出循环;
任务2:添加程序,使得注释B 到注释C 之间的语句在一个循环之内,从而判断从num 开始到1之间所有的素数。
#include
int num; while (1) {
printf("Enter a number between 1 and 10 :"); scanf("%d", &num);
/* if ( <-- Complete here) */ }
printf("Your number was %d\n", num); return(0); }
#include
#include
int i, num; char isPrime;
printf("Program checks to see if a number is prime\n" ); printf("Enter the integer : "); /*
A */
scanf("%d", &num);
isPrime = 1; /* B */
5.求爱因斯坦数学题。有一条长阶,若每步跨2阶,则最后剩余1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7步,最后正好一阶不剩\
6.6.计算斐波那契分数序列前n项之和(n是某个常
数).( 2/1,3/2,5/3,8/5,13/8,21/13,...... 前一项的分子作为后一项的分母。前一项的分子、分母之和作为后一项的分子。)。
7.问答题
(1)下面循环错在哪里?
for (i = 1; i > 5; i++) {
x /=2;
}
(2)下面循环错在哪里?
for (i = 10; i > 2; i++) {
x *=2;
}
(3)这个for循环的输出结果是多少?
for (i = 3; i > -2; i--) {
printf("%d ", i);
}
(4)这个while循环的输出结果是多少?
i = 0;
while (i < 5) {
i++;
printf("%d ", i * i);
}
(5)while循环错在哪里?
i = 0;
while (i = 10) {
i++;
x *= 2;
}
(6)完成下面的代码使之可以输出你的名字28次.
for (i = 3; i > ; i--) {
printf("My name is ");
C语言上机作业
1.输入十个整数,分别输出这10个数再计算并输出它们的和。 源程序: #include
} printf("Input x:"); scanf("%d",&x); for(j=0;j<10;j++) { if(x==a[j]) { printf("%d\n",j); goto L1; } } printf("not found\n"); L1: ; } 运行结果:
3.输入一个整数n(1 实验一: 1、已知华氏温度,根据转换公式计算相应的摄氏温度。 摄氏温度= 5*(华氏温度-32)/9 2.任意输入一个有五位数字的正整数,逆序输出每一数位上的数字。 如: 输入 12345 输出 5 4 3 2 1 #include"stdio.h" main() { double t,T; printf ("已知华氏温度,根据转换公式计算相应的摄氏温度"); scanf ("%lf",&t); T=(5*(t-32)/9); printf ("摄氏温度=%lf",T); } #include"stdio.h" main() { int value,a,b,c,d,e,m,n,h; printf ("任意输入一个有五位数字的正整数,逆序输出每一数位上的数字"); scanf ("%d",&value); a=value/10000; m=value%10000; b=m/1000; n=m%1000; c=n/100; h=n%100; d=h/10; e=h%10; printf ("%d%d%d%d%d",e,d,c,b,a); } 实验二: 1.一个成年人的身高与其父母的身高密切相关,根据以下人体标准身高预测公式计算自己或某个同学的身高,并跟实际身高比较,给出结论是否符合该公式(误 差在3厘米范围内即视为相符)。 男性身高=(父亲身高+母亲身高)×1.08÷2(厘米) 女性身高=(父亲身高×0.923+母亲身高)÷2(厘米) 2.从键盘上输入税前收入,根据以下公式及规则,计算个人所得税税额并输出。应纳个人所得税税额=(税前收入—起征点额度)*适用税率—速算扣除数 其中,起征点额度是3500元,其他如下: 应纳税所得额税率速算扣除数 不超过1500元的部分 3% 0 超过1500元至4500元的部分 10% 105 超过4500元至9000元的部分 20% 555 超过9000元至35000元的部分 25% 1005 超过35000元至55000元的部分 30% 2755 超过55000元至80000元的部分 35% 5505 超过80000的部分 45% 13505 如:某人月收入5000元,则应纳个人所得税税额为(5000-3500)* 10% - 105 = 45元。 #include 上机练习题 完成 1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 完成 2.计算1+2+3…+n的值,n是从键盘输入的自然数。 完成 3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。完成 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中 各元素的值。 完成 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面 值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。 完成 6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,n从键盘输入。 例如若n为1000时,函数值应为:s=153.909064。 完成 7.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下 车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。 完成 8.输入1~10之间的一个数字,输出它对应的英文单词。 完成 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? 完成 10.用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加1,转④; ⑧输出和sum,结束。 完成 11.用自然语言描述的程序逻辑为: ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥根据flag之值输出相应信息。 12.用自然语言描述的程序逻辑如下: ①设置环境; 实验5 函数(1) 【实验题5-1】以下程序的功能:从键盘输入两个数,计算出他们的和,并将结果输出在屏幕上。调试运行程序,观察出现了什么错误,提出两种修改方案。 【实验题5-2】下程序的功能:输出3~1000之的间的素数。请选择合适的内容填入程序的空白处,并调试运行程序。 【实验题5-3】从键盘输入一个整数n,计算n^3,并将结果输出在屏幕上。要求计算n^3用函数实现。 【实验题5-4】从键盘输入一个整数n,计算2n+1与++n之和。要求计算两数之和用函数 实现。 注意写计算表达式的时候3*n之间的乘号不要丢掉,否则会提示:invalid suffix “n” on integer constant. 调用用户自定义函数是只写ifun=fun(n); 就可以了,不要在括号里加上int。Ifun=fun(int n) × 【实验题5-5】编写程序,计算Cmn=n!/(n-m)!m!。要求如下: 1)编写一个函数计算n!; 2)编写主函数,输入n和m, 调用第1)项中的函数完成计算; 3)输出并计算C58、C712的结果。 【实验题6-1】以下程序功能:用已知三角形三边,求三角形面积。但程序有错,请上机调试并改正错误。 【实验题6-2】以下程序运行的结果应该是a=14, b=15,temp=0。在程序空白处填写适当的编译预处理命令。 【实验题6-3】用for循环输出20个0~99之间的随机数。要求没输出五个随机数换一行。 【实验题6-4】从键盘输入一个字母,如果是大写字母就转换成小写字母输出;如果是小写字母就转换成大写字母输出。要求用库函数实现。 第一次上机作业(2014): 要求: ?独立完成,上机调试通过后上交 ?作业提交邮箱: ?邮件主题命名:班级学号姓名(第1次作业), 例如:电1301班2王鹏(第1次作业) ?以附件形式将每次作业的所有程序源程序压缩打包后提交,压缩文件命名格式同上。 ?程序必须采用缩进格式 1.大写字母转换成小写字母 从键盘输入一个大写英文字母,输出相应的小写字母。 例:输入G 输出g 2.求平方根 输入一个实数x,计算并输出其平方根(保留1 位小数)。 例:输入17 输出The square root of 17.0 is 4.1 3.温度转换 设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32) a)输入华氏温度(实型) b)输出的摄氏温度结果保留两位小数 例:Please input Fahrenheit temperature: 76.8 The corresponding Celsius temperature is 24.89 4. 计算旅途时间 输入二个整数time1 和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。 (输入的有效的时间范围是0000 到2359,不需要考虑出发时间晚于到达时间的情况。) 例:输入712 1411 (出发时间是7:12,到达时间是14:11) 输出The train journey time is 6 hours 59 minutes. 5. 数字加密 输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。 例:输入1257 输出The encrypted number is 4601 思考题:你能否编程找出谁做的好事? 有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。 ?A说:不是我。 ?B说:是C。 ?C说:是D。 ?D说:他胡说。 已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。 第二次上机作业(2014): 要求: ?独立完成,程序必须采用缩进格式,上机调试通过后上交 实验7 数组(1) 【实验题7-1】此程序的功能:给数组元素赋值并进行输出。但程序中有错误,请查找原因,并调试程序以实现程序功能。 【实验题7-2】以下程序的功能:求整型数组中元素的最大值及其下标。请选择合适的内容填入程序中空白处。 【实验题7-3】以下程序的功能:把整型数组里的元素按逆序进行排序并输出。请选择合适的内容填入程序中空白处。 【实验题7-4】编写一个程序,定义一个有五个元素的一维数组,从键盘对该数组的元素进行赋值后再显示在屏幕上。 【实验题7-5】编写程序对整型数组iA的各元素进行从大到小排序。 【实验题7-6】在数组iA和数组iB中分别存放了na和nb个由小到大的有序数。编写程序,完成把两个数组中的元素按从小到大的顺序归并存放在数组iC中。 【实验题7-7】假设数组iA中的元素按由小到大的顺序存放。编写程序把数组iA中相同的元素删除至一个,然后按照每行六个元素的形式输出数组iA中的各个元素值。 【实验题7-8】在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素为该二维数组的一个鞍点。编写程序要求从键盘输入一个二维数组,当鞍点存在时,把鞍点找出来。 #include printf("M",a[i][j]); printf("\n"); } for(i=0;i k=0; for(j=1;j if(a[i][j]>a[i][k]) k=j; for(j=0;j if(a[j][k] break; if(j==M) printf("%d,%d,%d\n",a[i][k],i,k); } return 0; } 上面这个题代码运行不了,可又找不到问题所在,头疼!!! 实验8 数组(2) 【实验题8-1】此程序的功能:过滤字符数组中数字并进行输出。但程序中有错误,请查找原因,并调试程序以实现程序功能。 【实验题8-2】此程序的功能:统计字符数组中出现字符“s”的次数,并进行输出。但程序中有错误,请查找原因,并调试程序以实现程序功能。 【实验题8-3】以下程序的功能:连续输入一批“#”结束的字符串,遇“##”则全部结束,统计并输出每个字符串的有效长度。请选择适当的内容填入空白处。 【实验题8-4】 答案仅供参考 实验一 4.设计main函数实现从键盘上输入两个整型变量a、b的值,交换它们的值并输出。#include printf("x=%d,y=%d\n",x,y); getch(); } 实验二 1.编写程序,从键盘上输入一个整数(例如560)表示分钟,将其换算成用小时和分钟表示,然后输出至屏幕。 #include 上机练习题 1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 2.计算1+2+3…+n的值,n是从键盘输入的自然数。 3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中 各元素的值。 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面 值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。 6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,n从键盘输入。 例如若n为1000时,函数值应为:s=153.909064。 7.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下 车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。 8.输入1~10之间的一个数字,输出它对应的英文单词。 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? 10.用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加1,转④; ⑧输出和sum,结束。 11.用自然语言描述的程序逻辑为: ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥根据flag之值输出相应信息。 12.用自然语言描述的程序逻辑如下: ①设置环境; ②定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; ③输入原始正整数x; ④从x中分解出个位数字digit; ⑤合并个位digit至逆数y中; ⑥原始数x缩小10倍:x=x/10; ⑦如果x非零,则转④; ⑧输出逆数y,结束 13.输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构 成)。 14.输入10个数,分别统计其中正数、负数、零的个数。 15.先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100) C语言上机考试题—01 1. //#include 1:2:3 #include } } } return 0; } 8 #include"stdio.h" int main() { int a,b[10],m=0,n=0,p; int i,j,k; scanf("%d",&a); for(i=1;i<=a;i++) { m=0; n=0; p=i; for(j=0;p!=0;j++) { b[j]=p%10; p=p/10; } for(k=0;k C语言上机练习题 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】 1.阅读以下程序,说出其功能和运算结果。 #include<> intmain() { intn; intfactorial(intn); scanf("%d",&n); printf("%d\n",factorial(n)); return0; } intfactorial(intn) { inti,fact=1; for(i=1;i<=n;i++) fact=fact*i; returnfact; } 若输入5↙ 2.改正下列程序中的错误,在屏幕上显示“WelcometoYou!”。 #include<> intmian() { printf("WelcometoYou!\n") return0; } 3.若输入4,程序运行结果为【1】,若输入-4,运行结果为【2】,若输入10,运行结果为【3】。 #include<> main() { intx,y; scanf("%d",&x); if(x<1) {y=x; printf("x=%d,y=x=%d\n",x,y); } elseif(x<10) {y=2*x-1; printf("x=%d,y=2*x-1=%d\n",x,y); } else {y=3*x-11; printf("x=%d,y=3*x-11=%d\n",x,y); } } 4.当输入19,2,21时下列程序运行的结果是()。 #include<> main() {inta,b,c,max; printf("pleasescanthreenumbera,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if(max 第五次上机作业:(请用指针实现) 1.数据移位 有n(n<=10)个整数,使前面各数顺序向后移m(m<=n)个位置,最后m 个数变成最前面的m个数,如图所示。编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数和输出调整后的n个数。 SAMPLE OUTPUT Input n(n<=10):10 Input 10 integers:1 2 3 4 5 6 7 8 9 10 Output the original:1 2 3 4 5 6 7 8 9 10 Input m(m<=10):4 Output the shifted:7 8 9 10 1 2 3 4 5 6 #include 实验一上机操作初步(2学时) 一、实验方式: 一人一机 二、实验目的: 1、了解C语言程序的特点与基本结构。 2、了解C语言程序的编译环境。 3、掌握使用C语言编写和调试程序的流程:编辑-保存-编译-构建(组件)-执行。 4、掌握C语言程序在Visual C++ 6.0环境下的调试过程。 5、初步了解C程序的特点。 三、实验内容: 说明:前三题为必做题目,第四题为选做题目。 1、编辑实验教材P2程序,掌握C语言程序在Visual C++6.0环境下的编译流程和调试过程。(实验教材P2) 2、在屏幕上实现下列图案的输出: **************************** hello,welcome to china! good bye! **************************** (实验教材P11) 3、计算两个数x和y的和。(教材P5【例1-2】) 4、求两个数的最大值。(教材P5【例1-3】) 四、实验步骤与过程: 1、#include "stdio.h" void main( ) { printf("Hello,World!"); printf("\n"); } 2、 五、实验调试记录: 1、 2、 实验二简单的C程序设计(2学时) 一、实验方式: 一人一机 二、实验目的: 1、掌握C语言的数据类型。 2、掌握标识符、常量、变量的定义及使用。 3、掌握C语言的常用运算符及表达式。 三、实验内容: 说明:前四题为必做题目,第五题为选做题目。 1、从键盘输入华氏温度h,输出摄氏温度c(摄氏温度=5/9*(华氏温度-32))。(实验教材P18) 2、给定圆环,输入内圆环半径r1、外圆环半径r2,求出圆环的面积。(实验教材P27) 3、从键盘上输入两个整数x、y,实现两个数的交换,并求出最大值、最小值和两个数的平均值。(实验教材P21) 4、输入并运行以下程序,分析运行结果。(实验教材P27) #include “stdio.h” void main( ) { int i,j; i=8; j=10; printf(“%d,%d\n”,++i,++j); i=8; j=10; printf(“%d,%d\n”,i++,j++); i=8; j=10; printf(“%d,%d\n”,++i,i); i=8; j=10; printf(“%d,%d\n”,i++,i); } 5、从键盘上输入3个数a、b、c,求一元二次方程的解x1、x2,并分别把这两个解的绝对值作为圆柱的半径与高,计算圆柱的体积。(实验教材P20) 四、实验步骤与过程: 五、实验调试记录: 实验三选择结构程序设计(一)(2学时) 一、实验方式: 一人一机 二、实验目的: 1、掌握单分支if语句的使用方法。 2、掌握双分支if-else语句的使用方法。 3、掌握多分支语句的一般形式和使用方法。 三、实验内容: 说明:前四题为必做题目,第五题为选做题目。 1、从键盘输入一个3位整数,请输出该数的逆序数。(实验教材P27) 2、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。(实验教材P27) 3、判断箱子是正方体还是长方体。请根据注释将程序填写完整。(实验教材P33) 4、编写程序,通过输入x的值,计算阶跃函数y的值。(教材P70【例5-4】) 上机考试习题集 1.编写程序,一次输入5个学生的3门课成绩,每输入一个学生的3门成绩后,立即统计并输出该学生的总分和平均分。 #include "stdio.h" void main() { int score[5][3], i,j; float sum[5],average[5]; printf("请分别输入三个学生的成绩:\n"); for(i=0;i<5;i++) { sum[i]=0; for(j=0;j<3;j++) {scanf("%d",&score[i][j]); average[i]=0; sum[i]+=score[i][j]; average[i]=sum[i]/5; } } for(i=0;i<5;i++) printf("第%d个学生的总分为:%f,平均成绩为:%f\n",i+1,sum[i],average[i]); } 2 、编写程序,提示用户从键盘输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后在显示器上输出此数,以便验证处理是否正确。 #include C语言上机考试练习题(1) 说明:我们已经学习完成了基本数据类型、基本控制语句,以及数组、函数这些知识了,请同学们看看附件中的这些题目是否能够快速编写出来?可能有个别题目与过去的练习有些重复,请尽量不要去参考过去的答案。如果现在编写起来困难还很多,那你就要加倍努力了。 1、编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,返回子串在主串中的位置。要求: (1)在主函数中输入两个字符串,调用子函数cmpsubstr()判断,并在主函数输出结果。 (2)子函数的返回值为-1表示未找到,否则返回子串的位置(起始下标)。#include if(*(s1+a)==*(s2+i)) { a++; if(a==d) { situation=1; break; } } else { a=0; } } if(situation==0)return(-1); else return(i-d+2); } 2、输入一个字符串,有数字和非数字字符,如:a123x456 17960?302tab5876,将其中连续的数字作为一个整数,依次存放到数组a中。例如,123放在a[0]中,456放在a[1]中等等,统计共有多少个整数,并输出这些整数。要求:(1)在主函数中输入字符串,并输出结果。调用子程序处理字符串。 (2)子函数的返回值为整数的个数。 #include 撞球 #include x0=-x0; if(towards[i]=='R') x0=2*wide-x0; } printf("%.4lf\n",sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1))); } return(0); } 20. 整数问题 成绩: 0 / 折扣: 0.8 请求输出满足以下条件的n 位正整数的个数: 要求该n位整数的从高位开始前1位可以被1整除,该n位整数前2位可以被2*2整除,该 整数前3位可以被3*3整除,该整数前4位可以被4*4整除……。即该整数前k位都可被k 平方整除。 例如:n=1,则符合条件的1位正整数为1~9,输出答案9。n=2,符合条件的正整数为:12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96,则输出答案22。当n=4时,2432就是一个符合题意的整数。第一位2可以被1整除; 前2为24可以被4整除;前3位243可以被9整除;整个4位2432可以被16整除。 输入: n(0<=n<9) 输出: 符合该条件的n位正整数的数量 (本题目为软件学院2007年保研学生初试上机试题。本题可以不用数组) 测试输入期待的输出时间限制内存限制额外进程 测试用例 1以文本方式显示 1.1? 以文本方式显示 1.9? 无限制64M 0 测试用例 2以文本方式显示 1.2? 以文本方式显示 1.22? 无限制64M 0 测试用例 6以文本方式显示以文本方式显示无限制64M 0 1.按照计算机应用领域分类,学校使用的成绩管理系统属于_______。 A. 实时控制 B. 计算机辅助设计 C. 数据处理 D. 科学计算 参考答案:C 2.下面关于计算机系统的叙述中,完整的计算机系统通常是指______。 A. 计算机的硬件系统 B. 计算机上配置的操作系统 C. 计算机的软件系统 ! D. 由硬件系统和软件系统组成 参考答案:D 3.微型计算机的微处理芯片上集成的主要组件包括______。 A. 控制器和运算器 B. 内存和控制器 C. 控制器和存储器 D. 运算器和I/O接口 参考答案:A 的对话框窗口不可以______。 A. 关闭 【 B. 移动 C. 任意改变大小 D. 最小化 参考答案:C 5.某用户在域名为的邮件服务器上申请了一个账号,账号名为xing,那么该用户的电子邮件地址为______。 A. xing%参考答案:D 6.下列对C语言程序的描述中,正确的是_______。 A. C语言程序总是从第一个定义的函数开始执行 B. C语言程序总是从最后一个定义的函数开始执行 C. C语言程序总是从main()函数开始执行 < D. C语言程序中的main()函数必须放在程序的开始部分 参考答案:C 7.设有char ch='\\';,则变量ch包含______个字符。 A. 1 B. 2 C. 3 D. 4 参考答案:A 8.以下选项中合法的字符常量是____________。 A. '\101' { B. '\97' C. '\xyz' D. '\019' 参考答案:A 9.下面用户标识符中合法的是____________。 A. iPhone# B. 13a C. char D. _int 参考答案:D ( 10.已知int c1=5,c2=2,c3;,则执行c3=c1/c2后,c3的值是 _______。 A. 5 B. C. 3 D. 2 参考答案:D 11.设有定义int b=0;,表达式_______与其它表达式的值不相同。 A. b+=1 B. b++ C. ++b //vc1 //prog1.cpp //设计一个程序,从键盘输入三个整数,按由小到大的顺序输出。#include"stdio.h" main() { int a[3],i,j,t; for(i=0;i<3;i++) { scanf("%d",&a[i]); } for(i=0;i<9;i++) /*此处的i可以小于任意一个大于6的整数*/ { for(j=0;j<2;j++) { if(a[j]>a[j+1]) t=a[j],a[j]=a[j+1],a[j+1]=t; } } printf("The three data from small to big is:"); for(i=0;i<3;i++) printf("%d ",a[i]); } //vc1 //prog2.cpp //求1+3+5+...+95+97+99的和。 #include"stdio.h" main() { int i,sum=0; for(i=1;i<100;i=i+2) sum+=i; printf("1+3+5+....+99=%d\n",sum); } //vc1 //prog3.cpp //写一个函数,从键盘输入一个整数,如果该整数为素数,则输出“此 整数为素数”,否则输出“整数非素数”。(注:要求从主函数输入整数)#include"stdio.h" main() { int i,j,k,l=2; printf("输入一个大于3的整数:"); scanf("%d",&i); for(j=2;j=0;i--) printf("%d ",a[i]); for(i=0;i<10;i++) sum+=a[i]; printf("The total is:%d\n",sum); } //vc2 //prog2.cpp //输入N个国家的英文名,要求按字母的先后顺序排列,并按照顺序输出。C语言上机作业题及答案
C语言上机练习题
5-6次C语言上机作业
C语言上机作业试题5套含答案
7~8次C语言上机作业
扬州大学C语言上机作业1-9整理
C语言上机练习题
C语言期末上机考试题及答案
西工大C语言上机考试题库
C语言上机练习题
大连理工c语言第五次上机作业参考答案
c语言上机操作题
c语言上机考试训练题库及答案
C语言上机练习题_828701982
C语言作业3
c语言上机模拟题1
C语言上机试题答案