C1C2-----------------------------------------------------------------------------
一、改错:
#include <stdio.h>
int main()
{
float score;
int age;
scanf("%d %d\n", score, age);//scanf必须接收地址,不能用\n,并且score应该接受实数用f。
// scanf("%d,%f",&age,score);
printf("age是%d,score是%d\n", age, score);
return 0;
}
2.
#include <stdio.h>
int main()
{
int a = 10++;//10++是自加运算。是不能放到=右边的。
//int a = 10;
int b = 10.0 % 2;//b是一个实数不应有不应该用10.0。
//int b = 10%2;
return 0;
}
3、分析题
说出下列程序的输出结果(不要运行程序)
#include <stdio.h>
int main()
{
int a = 20;
int score = a + 100;
printf("%d\n", score);//120
{
int score = 50;
{
score = 10;
printf("%d\n", score);//10
}
a = 10;
}
{
score = a + 250;
int score = 30;
printf("%d", score);//30
}
printf("%d\n", score);//260
return 0;
}
三.编程题
1、接受用户从键盘上输入的两个字符,然后输出他们
#include <stdio.h>
int main(int argc, const char * argv[]) {
char a;
char b;
scanf("%c %c",&a,&b);
printf("字符1:%c 字符2:%c\n",a,b);
printf("Hello, World!\n");
return 0;
}
2、接受用户从键盘上输入的两个双精度浮点数,然后输出他们
#include <stdio.h>
int main(int argc, const char * argv[]) {
double a;
double b;
scanf("%lf,%lf",&a,&b);
printf("实数1:%lf 实数2:%lf\n",a,b);
printf("Hello, World!\n");
return 0;
}
3、接受用户从键盘上输入的两个单精度浮点数,然后输出他们(保留两位整数))
#include <stdio.h>
int main(int argc, const char * argv[]) {
float a;
float b;
scanf("%f,%f",&a,&b);
printf("实数1:%f 实数2:%f\n",a,b);
printf("Hello, World!\n");
return 0;
}
4、用户从键盘上输入两个整数,然后输出他们和
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 0;
int b = 0;
printf("请输入两个整数并以逗号分隔:\n");
scanf("%d,%d",&a,&b);
printf("两数之和为:%d\n",a+b);
printf("Hello, World!\n");
return 0;
}
5、用户从键盘上输入两个整数,然后输出他们差
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 0;
int b = 0;
printf("请输入两个整数并以逗号分隔:\n");
scanf("%d,%d",&a,&b);
printf("两数之差为:%d\n",a-b);
printf("Hello, World!\n");
return 0;
}
6、用户从键盘上输入两个整数,输出他们的商
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 0;
int b = 0;
printf("请输入两个整数并以逗号分隔:\n");
scanf("%d,%d",&a,&b);
printf("两数之商为:%d\n",a/b);
printf("Hello, World!\n");
return 0;
}
7、用户从键盘上输入两个整数,输出他们的余数
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 0;
int b = 0;
printf("请输入两个整数并以逗号分隔:\n");
scanf("%d,%d",&a,&b);
printf("余数为:%d\n",a%b);
printf("Hello, World!\n");
return 0;
}
8、在控制台输出 %
#include <stdio.h>
int main(int argc, const char * argv[]) {
printf("%%");
return 0;
}
#include <stdio.h>
int main(int argc, const char * argv[]) {
float a,b;
scanf("%f%f",&a,&b);
printf("%f %f",a,b);
printf("%%");
return 0;
}
C3------------------------------------------------------------------------------
一、填空题
1. 设int x=9,y=8; 表达式x == y + 1的结果是1。
2. 定义int x, y; 执行y =(x = 1, ++x, x + 2);后, y的值是4。
3. 定义int x = 10, y, z; 执行y = z = x; x = y == z; 后, x的结果是1。
4. 设int a=1,b=2,c,d,e; 执行
c=(-a++)+(++b);
d=(b--)+(++a)-a;
e=(a/(++b))-(a/(--a));
请问a,b,c,d,e的结果是:2,3,2,3,0。
5. 设int a=2,b=3,c,d,e,f; 执行
c=(a++>= --b);
d=(a==++b);
e=(a--!=b);
f=(++a>b--);
请问a,b,c,d,e,f的结果是:3,2,1,1,0,0。
6.以下程序运行后的输出结果是20,0。
#include ”stdio.h”
main()
{
int x=10, y=20, t=0;
if (x==y) t=x; x=y; y=t;
printf("%d,%d\n",x,y);
}
7.执行以下语句后,x、y和z 的值分别为1,0,0。
int x,y,z;
x=y=z=0;
++x || ++y && ++z;// 逻辑或||段路
printf("%d,%d,%d",x,y,z);
8. 已有定义:int x=3, y=4, z=5; 则表达式!(x+y)+z-1 && y+z/2的值是1。//!(x+y)得值为0
9. 设a=5,b=6,c=7,d=8,m=2,n=2, 则执行(m=a>b) && (n=c>d)后n的值为2 //逻辑与&&短路m=0,后面不用看了。
10. 设x、y和z都是int类型变量,且x=3,y=4,z=5, 则下面的表达式中,值为0的表达式为(D )。
A.’x’ && ’y’ B.x<=y
C.x||y+z && y-z D.!((x<y)&&!z||1)
11. 以下关于运算符优先顺序的描述中正确的是( c )。
A.关系运算符<算术运算符<赋值运算符<逻辑与运算符
B.逻辑与运算符<关系运算符<算术运算符<赋值运算符
C.赋值运算符<逻辑与运算符<关系运算符<算术运算符
D.算术运算符<关系运算符<赋值运算符<逻辑与运算符
12. 下列运算符中优先级最高的是( c )。
A.< B.&& C.+ D.!=
13. 能正确表示“当x的取值在[-58,-40]并且[40,58]范围内为真,否则为假”的表达式是( c )。
A.(x>= -58) && (x<= -40) && (x>=40) && (x<=58)
B.(x>= -58) || (x<= -40) || (x>=40) || (x<=58)
C.(x>= -58) && (x<= -40) || (x>=40) && (x<=58)
D.(x>= -58) | |(x<= -40) && (x>=40) || (x<=58)
14.若希望当x的值为奇数时,表达式的值为“真”,x的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是( c )。
A.x%2==1 B.!(x%2==0)
C.!(x%2) D.x%2
15.已知 x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是( C.1 )。
A.0 B.语法错
C.1 D.“假”
16.执行以下语句后,y 的值为( A.0 )。
int x,y,z;
x=y=z=0;
++x || ++y && ++z;
A.0 B.1 C.2 D.不确定值
17.设以下变量均为int类型,则值不等于7的表达式是( C )。
A.(m=n=6, m+n, m+1)
B.(m=n=6, m+n, n+1)
C.(m=6, m+1, n=6, m+n)
D.(m=6, m+1, n=m, n+1)
18.假设所有变量均为整型,则表达式(x=2, y=5, y++, x+y)的值是( 8 )。
A.7 B.8 C.6 D.2
19.设x、y均为float型变量,则不正确的赋值语句是( C. )。
A.++x ; B.x*=y-2;
C.y=(x%3)/10; c实数不能取余 D.x=y=0;
20.若x和y均定义为int 型,z定义为double型,以下不合法的scanf()函数调用语句为( d)。
A.scanf(”%d%lx,%le”,&x,&y,&z);
B.scanf (”%2d*%d%lf ”, &x, &y, &z);
C.scanf(”%x%*d%o”, &x,&y);
D.scanf(”%x%o%6.2f”, &x,&y,&z);
21.有如下程序段:
int x1, x2;
char y1, y2;
scanf("%d%c%d%c", &x1, &y1, &x2, &y2);
若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是( a )。(注:└┘代表空格)
A.10A└┘20B B.10└┘A20B
C.10 └┘A└┘20└┘ B D.10A20└┘B
22.若变量已正确说明为float类型, 要通过语句scanf("%f %f%f", &a, &b, &c);给a赋予10.0, b赋予22.0, c赋予33.0, 不正确的输入形式为( b )。
A.10<回车> B.10.0,22.0,33.0<回车>
22<回车>
33
C.10.0<回车> D.10 22<回车>
22.0 33.0<回车> 33<回车>
23.有如下程序,若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是( d )。(注:└┘代表空格)
int x1, x2;
char y1, y2;
scanf("%d%d", &x1,&x2);
scanf("%c%c", &y1,&y2);
A.1020AB B.10└┘20└┘ABC
C.10└┘20<回车> D.10└┘20AB
AB
24.有如下程序段,对应正确的数据输入是( a )。
float x,y;
scanf("%f%f", &x,&y);
printf("a=%f,b=%f", x,y);
A.2.04<回车> B.2.04,5.67<回车>
5.67<回车>
C.A=2.04,B=5.67<回车> D.2.055.67<回车>
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n");
return 0;
}
C4----------------------------------------------------------------------------
一、改错题
1.
#include <stdio.h>
int main() {
int a = 10;
switch (a){
case 0:
int b = 20 + a;
break;
//如果case中定义了新的变量应该用大括号括住{}
case 2:
break;
}
return 0;
}
二、分析题
1. 判断输出结果
int x = 2,y=3;
switch(x)
{
case 2:
y++;
case 3:
y+=2;
case 4:
y+=3;
default:
y = 0;
break;
}
printf("y=%d\n", y);//y=0 case后没有break语句。语句会往下执行。
2. 判断输出结果
int x = 1,y = 1;
if(x++==2 && ++y==2) {
x =7;
}
printf("x=%d, y=%d\n", x, y);//短路x = 2; y = 1
3. 判断输出结果
int x = 1,y = 1;
if(x++==2 || ++y==2) {
x =7;
}
printf("x=%d, y=%d\n", x, y);//x = 7;y = 2
4.以下程序的运行结果是(2)。
#include ”stdio.h”
main()
{ int a=1;
if (a++>1) printf(”%d\n”, a);
else printf(”%d\n”, a--);
}
6.执行以下程序段后,变量x,y,z的值分别为()。
int a=1,b=0, x, y, z;
x=(--a==b++)?--a:++b;
y=a++;
z=b;//x =-1, y= -1,z = 1
7.以下程序的输出结果是(c)。
#include ”stdio.h”
main()
{
int a=5, b=4, c=6, d;
printf(”%d\n”, d=a>b? a>c?a:c :b);
}
8.若a、b、c1、c2、x、y均为整型变量,正确的switch 语句是( d )。
A.switch (a+b); B.switch a
{
case 1: y=a+b; break; { case c1: y=a-b; break;
case 0: y=a-b; case c2: x=a*d; break;
break; default: x=a+b;
} }
C.switch (a*a+b*b) D.switch(a-b)
{ case 3: { default: y=a*b; break;
case 1: y=a+b; break; case 3: x=a+b; break;
case 3: y=b-a; break; case 10: case 11: y=a-b; break;
}
}
9.执行下列程序,输入为3的数出结果是(3,4)。
#include ”stdio.h”
main()
{
int k;
scanf(”%d”, &k);
switch(k)
{ case 1: printf(”%d\n”, k++);
case 2: printf(”%d\n”, k++);
case 3: printf(”%d\n”, k++);
case 4: printf(”%d\n”, k++);
break;
default: printf(”Full!\n”);
}
}
11.以下程序的运行结果是(2)。
#include ”stdio.h”
main()
{
int a=2,b= -1,c=2;
if (a<b)
if (b<0)
c=0;
else c++;
printf(”%d\n”,c);
}
13. 若从键盘输入58,则输出结果是_____58,58,58___。
#include ”stdio.h”
main()
{
int a;
scanf(”%d”, &a);
if (a>50) printf(”%d”, a);
if (a>40) printf(”%d”,a);
if (a>30) printf(”%d”,a);
}
三、编程题
1.利用简单分支选择语句判断输入的一个整数是否是偶数
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a,b;
scanf("%d",&a);
b = a%2;
switch (b) {
case 0:
printf("您输入的是偶数");
break;
default:
printf("您输入的是奇数");
break;
}
2.编写一个程序,要求从键盘上输入某学生的四科成绩,求出该学生的最高分和最低分
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a,b,c,d;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
int max,min;
max = min = a;
if (b>max) {
max = b;
}else if (b<min) {
min = b;
}
if (c>max) {
max = c;
}else if (c<min) {
min = c;
}
if (d>max) {
max = d;
}else if (d<min) {
min = d;
}
printf("max = %d min = %d\n",max,min);
return 0;
}
3、已知某公司员工的工资底薪为500,员工销售的软件金额与提成方式如下:
销售额 ≤2000 没有提成
2000 < 销售额 ≤ 5000 提成8%
5000 < 销售额 ≤ 10000 提成10%
销售额 ≥ 10000 提成12%
利用switch
#include <stdio.h>
int main(int argc, const char * argv[]) {
int beta = 500;
printf("请输入销售金额:");
int money;
scanf("%d",&money);
int a = money/1000 ;
if (money>2000 && money%1000!=0) {
a += 1;
}
switch (a) {
case 0:
case 1:
case 2:
printf("工资为:%d\n",beta);
break;
case 3:
case 4:
case 5:
printf("工资为:%d\n",+money*8/100);
break;
case 6:
case 7:
case 8:
case 9:
case 10:
printf("工资为:%d\n",beta+money*10/100);
break;
default:
printf("工资为:%d\n",beta+money*12/100);
break;
}
return 0;
}
4、题目:程序运行的时候提示下列信息
请输入相应数字选择需要执行的运算:
1 加法
2 减法
用户选择运算后,再提示用户输入两个需要进行运算的整数,输入完毕后就输出运算结果
#include <stdio.h>
int main(int argc, const char * argv[]) {
printf("请输入数字选择执行的运算\n");
printf("1 加法 ");
printf("2 减法\n");
int math;
scanf("%d",&math);
if (math!=1 && math!=2) {
printf("请好好玩");
return 0;
}
printf("请输入两个整数并用逗号隔开\n");
int a,b;
scanf("%d,%d",&a,&b);
if ((math = 1)) {
printf("结果为:%d\n",a+b);
}else if ((math = 2)) {
printf("结果为:%d\n",a-b);
}
return 0;
}
5.铁路托运行李规定:行李重不超过50公斤的,托运费按0.15元每公斤计算,如果超过50公斤,超出部分每公斤加收0.1元。编程。
#include <stdio.h>
int main(int argc, const char * argv[]) {
printf("请输入公斤数:\n");
int weight,money;
scanf("%d",&weight);
if (weight<=50) {
printf("金额为:%d\n",money = weight*0.15);
}else if (weight>50) {
printf("金额为:%d\n",money = (weight-50)*0.1+7.5 );
}
return 0;
}
6.有3个整数a,b,c,由键盘输入,输出其中最大的数。
#include <stdio.h>
int main(int argc, const char * argv[]) {
printf("请输入三个整数用逗号分隔\n");
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
int max = 0;
max = a;
if (b>max) {
max = b;
}
if (c>max) {
max = c;
}
printf("最大值为:%d\n",max);
return 0;
}
7.有一个函数:x<1的时候,y = x;1<=x<10的时候,y=2x-1;x>=10的时候,y=3x-11。写一段程序,输入x,输出y值。
#include <stdio.h>
int main(int argc, const char * argv[]) {
printf("请输入X的值\n");
int x,y;
scanf("%d",&x);
if (x<1) {
y = x;
}else if (x>=1 && x<10) {
y = 2*x-1;
}else if (x>=10) {
y=3*x-11;
}
return 0;
}
8.给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。
#include <stdio.h>
int main(int argc, const char * argv[]) {
printf("请输入成绩\n");
int score,level;
scanf("%d",&score);
level = score/10;
if (score>100 || score<0) {
printf("正常点好不\n");
return 0;
}
switch (level) {
case 6:
printf("D\n");
break;
case 7:
printf("C\n");
break;
case 8:
printf("B\n");
break;
case 9:
case 10:
printf("A\n");
break;
default:
printf("E\n");
break;
}
return 0;
}
//9.某个自动加油站有 ‘a’,‘b’,‘c’三种汽油品种,单价分别为 6.92,7.37,7.64(元/公升),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠,请编程序针对用户输入加油量x,汽油品种y和服务类型z(‘f’—自动加,‘m’—自己加,‘e’—协助加),(注:‘f’—自动加无优惠),计算应付款pay。(请用多分支选择switch语句)。
#include <stdio.h>
int main(int argc, const char * argv[]) {
printf("请选择汽油品种:a,b,c\n请选择加油量:\n请选择服务类型:f,m,e\n");
char y,z;
float x,price = 0.0,pay,help = 0.0;
scanf("%c,%f,%c",&y,&x,&z);
switch (y) {
case 'a':
price = 6.92;
break;
case 'b':
price = 7.37;
case 'c':
price = 7.64;
}
switch (z) {
case 'f':
help = 0;
break;
case 'm':
help = 0.05;
break;
case 'e':
help =0.1;
break;
}
pay = (x*price)-(x*price*help);
printf("您应付款:%f\n",pay);
return 0;
}