C语言_中国石油大学(华东)c语言上机题

C语言_中国石油大学(华东)c语言上机题
C语言_中国石油大学(华东)c语言上机题

Hello world.

让我们用C语言向世界问好。

最早的程序基本是这个样子的:

程序一:

#include <>

void main()

{

printf("Hello world.\n");

}

程序二:

#include <>

int main()

{

printf("Hello world.\n");

return 0;

}

上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。

输入:无

输出:Hello world.

#include<>

int main()

{

printf("Hello world.\n");

}

Welcome to Beijing.

让我们来练习如何显示多行文字。

输入:无

输出:就是下面的那段文字。

#include<>

void main()

{printf("Welcome\n");

printf("to\n");

printf("Beijing.\n");

}

练习最简单的printf和scanf

printf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。

输入:整型变量x的值。

输出:输出整型变量x对应的十进制、八进制和十六进制形式。

认真观察-1的八进制和十六进制输出,请想想是为什么。

#include <>

int main()

{int x;

scanf("%d",&x);

printf("x=%d,",x);

printf("x=%o,",x);

printf("x=%x\n",x);

return 0;

}

练习两个整数之间的运算

背景:基本练习。

输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123 444

输出:分别输出进行+、-、*、/、*之后的运行结果。#include<>

int main()

{int x,y;

scanf("%d%d",&x,&y);

printf("%d+%d=%d\n",x,y,x+y);

printf("%d-%d=%d\n",x,y,x-y);

printf("%d*%d=%d\n",x,y,x*y);

printf("%d/%d=%d\n",x,y,x/y);

printf("%d%%%d=%d\n",x,y,x%y);

return 0;

}

学习打印你的第一个图形

背景:我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。

程序如下:

#include <>

int main()

{

printf("****\n");

printf("****\n");

printf("****\n");

printf("****\n");

return 0;

}

要求:按照上面的程序范例,编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。

输入:无。

输出:指定图形。

#include <>

int main()

{

printf(" *\n");

printf(" ***\n");

printf(" *****\n");

printf("*******\n");

return 0;

}

整型数的表示范围

编写一个循环程序,输入N 值,输出N 的阶乘。关于循环程序怎么编写,可以参考教材第3章P66页的例题和第5章P82的例题的内容。注意整型数的表示范围,如果当输入的N 比较大时,例如N 等于20 时,输出怎么是负数了?自己想明白吧!#include<>

void main()

{int N,i;

int sum=1;

N>=2;

scanf("%d",&N);

if(N<=16)

{for (i=1;i<=N;i++)

sum=sum*i;

printf("%d\n",sum);

}

if(N>=17)

printf("N is too big!\n");

}

求正弦函数值

已知求正弦sin(x) 的近似值的多项式公式为:

sin(x) = x - x3/3! + x5/5! - x7/7!+ …… + (-1)n x2n+1/(2n+1)! + …

编写程序,要求输入x (单位是弧度)和ε,按上述公式计算sin(x) 的近似值,要求计算的误差小于给定的ε。

此题当然要用到循环语句,到第5章去找个猫来照着画吧,循环的终止条件就是本次计算出来的正弦函数值和上次计算的值的差小于给定的ε。求两个值的差时,要求出其绝对值,使用库函数fabs(),头文件在里。

友情提示:给定的误差值ε越小,计算的精度越高,但是要注意喽,给的精度太高,你的程序会成为死循环。如果出现死循环的情况,可以用+键退出程序。

#include <>

#include <>

int main()

{ float x,eps,s,y=0,y0,t;

int n,j;

scanf("%f%f",&x,&eps);

n=t=j=1;

s=x;

do

{ y0=y;

if (n%2==0) y=y-s/t;

else y=y+s/t;

s*=x*x;

t*=(j+1)*(j+2);

j+=2;

n++;

} while(fabs(y0-y)>eps);

printf("%f\n",sin(x));

system("PAUSE");

return 0;

}

判断输入的字符的类型

我们将字符分为五类:大写字母、小写字母、数字、控制字符、其他字符。

编写程序,从键盘输入一个字符,输出字符所属的类型:大写字母时输出capital letters,小写字母时输出small letters,数字是输出figures,其他字符时输出others。

#include<>

void main()

{

char c;

c = getchar ( );

if (c < 0x20)

printf ("The character is a control character\n");

else if (c >= '0' && c <= '9')

printf ("figures\n");

else if (c >= 'A' && c <= 'Z')

printf ("capital letters\n");

else if (c >= 'a' && c <= 'z')

printf ("small letters\n");

else

printf ("others\n");

}

找零钱

假定有5 角、1 角、5 分、2 分和1 分共 5 种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法。例如,当要给某顾客找7 角 2 分钱时,会给他一个 5 角, 2 个 1 角和 1 个 2 分的硬币。试编写一个程序,输入的是要找给顾客的零钱(以分为单位),输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。

#include <>

int main()

{

int x1,x2,x3,x4,x5;

int x;

scanf("%d",&x);

x1=x/50;

x2=x%50/10;

x3=x%50%10/5;

x4=x%50%10%5/2;

x5=x%50%10%5%2/1;

printf("%d\n",x1);

printf("%d\n",x2);

printf("%d\n",x3);

printf("%d\n",x4);

printf("%d\n",x5);

return 0;

}

计算时钟的夹角

背景:钟面上的时针和分针之间的夹角总是在0 度~ 359 度之间。举例来说,在十二点的时候两针之间的夹角为0 度,而在六点的时候夹角为180 度,在三点的时候为90 度。本题要解决的是计算0:00 到12:00之间任意一个时间的夹角。

输入:每组测试数据包含两个数字:第一个数字代表小时( 大于等于0 小于12) ,第二个数字代表

分( 在区间[0, 59] 上) 。

输出:对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。

友情提示:以表中心到12点的连线为基准,分针每走1分钟是6度,时针与基准的夹角每个小时也是30度,从整点开始,每过1分钟时针再增加度。

提示:时钟夹角计算公式||,h为时针,m为分针。求浮点型绝对值的函数为fabs,需要包含头文件

#include ""

#include ""

int main()

{

int h,m;

double angle;

scanf("%d%d",&h,&m);

angle=fabs*m-30*h);

if(angle>180)

angle=360-angle;

printf("At %d:%02d the angle is %.1f degrees.\n",h,m,angle);

}

照猫画猫:计算圆柱的侧面积及体积

如果已知圆柱的底面半径r ,以及高h ,则可计算出圆柱的侧面积s=2πrh ,体积v=πr 2 h 。其中π=

输入第一行输入圆柱的底面半径r

第二行输入圆柱的高h

输出s=< 圆柱的侧面积>,v=< 圆柱的体积>

要求 1. 所有变量都定义为双精度类型

2. 结果精确到小数点后两位

#include ""

#define n

int main()

{

float r,h,s,v;

printf;

scanf("%f%f",&r,&h);

s=2*n*r*h;

v=n*r*r*h;

printf("s=%,v=%\n",s,v);

}

分离整数

任意从键盘上输入一个三位正整数,要求正确地分离出它的个位、十位和百位,并分别在屏幕上输出。

比如输入的三位正整数

#include ""

int main()

{

int x,hundreds,tens,units;

printf;

scanf("%d",&x);

hundreds=x/100;

tens=x%100/10;

units=x%100%10;

printf("units=%d,tens=%d,hundreds=%d\n",unit s,tens,hundreds);

}

鸡兔同笼

已知笼中有头h个,有脚f条,问笼中鸡兔各有多少只?

输入:头和脚的数目

输出:兔子和鸡的数目(输出语句为:printf("rabbit=%d,chicken=%d",rabbit,chicken);)Sample

输入:10 20

输出:rabbit=0,chicken=10

#include ""

int main()

{

int chicken,rabbit,f,h;

scanf("%d%d",&h,&f);

rabbit=(f-2*h)/2;

chicken=(4*h-f)/2;

printf("rabbit=%d,chicken=%d\n",rabbit,chicken );

}

温度转换

背景:经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:有些使用华氏温度标准(F),有些使用摄氏温度(C)。现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。

温度转换的公式为:F=(C×9/5)+32 ;C=(F-32)×5/9 ;式中F--华氏温度,C--摄氏温度。

输入:第一个数据(1 或 2 )确定转换的类型:华氏转摄氏(1);摄氏转华氏(2);

第二个数据是相应需要转换的温度值。

输出:相应的转换后的温度值(保留小数点后 2 位)。

#include <>

void main()

{

int lx;

double f,c;

scanf("%d",&lx);

if(lx==1){

scanf("%lf",&f);

c=(f-32)*5/9;

printf("The Centigrade is %.2f\n",c);

}

else{

scanf("%lf",&c);

f=(c*9/5)+32;

printf("The Fahrenheit is %.2f\n",f);

}

}

分段函数

有一分段函数,y=f(x)。当x小于6时,y=x-12;当x大于等于6且小于15时,y=3x-1;当x大于等于15时,y=5x+9.从键盘上输入一个整数x,输出对应的y值。

#include <>

void main()

{

int x,y;

scanf("%d",&x);

if(x<6)

y=x-12;

else if(x<15)

y=3*x-1;

else

y=5*x+9;

printf("%d\n",y);

return 0;

}

整数位数判断

输入一个不多于5位的正整数,要求: (1)求它是几位数;(2)逆序打印出各位数字。

#include <>

#include <>

#define SIZE 5

int

main(void)

{

int

bit_count;等腰三角形:isoceles triangle.

不构成三角形:non-triangle.

一般三角形:triangle.

#include<>

void main()

{

float a,b,c;

scanf("%f%f%f",&a,&b,&c);

if(a+b

printf("non-triangle.\n");

else if(a==b&&b==c)

printf("equilateral triangle.\n");

else if(a==b||b==c||a==c)

printf("isoceles triangle.\n");

else

printf("triangle.\n");

}

字符加密输出

从键盘上输入一个字符,进行加密以后再输出在屏幕上。加密规律是:输入小写英文字母时,输入a 输出Z、输入b输出Y、输入c输出X、...、输入z输出A。输入大写英文字母时,将该字母ASCII码值再加上该值的1/2后输出所对应的字符,例如数字A 的ASCII码值是65,加上其值的1/2后是98(小数四舍五入),则输出字符‘b’。输入数字时,将该数字原ASCII码值再加上该值十进制的十位上的数后输出,例如数字9的ASCII码值是57,加上十位上的数5后是62,则输出字符‘>’。输入其他字符时原样输出。友情提示:整数之间运算的结果要取整,例如5/2的结果是2,而对小数四舍五入的结果就是了。所以输入大写英文字母时的输出要仔细考虑。#include <>

int main()

{ char ch;

int a;

ch=getchar();

if(ch>=97&&ch<=122)

{ch=187-ch;putchar(ch);}

else if(ch>=65&&ch<=90)

{a=ch%2;

if (a==1) (char)a=(ch+1)/2+ch;

else (char)a=ch/2+ch;

putchar(a);}

else if(ch>=48&&ch<=57)

{ch=ch/10+ch;

putchar(ch);}

else putchar(ch);

printf("\n");

}

判断某年某月的天数

一年有365天,有的月份有31天,有的有30天,2月份闰年的时候是29天,非闰年的时候是28天。现在要求从键盘上输入一个年份和月份,输出其对应的天数。

#include <>

main()

{ int year,month,days;

scanf("%d %d", &year,&month);

switch(month)

{ case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12: days=31;break;

case 4:

case 6:

case 9:

case 11:days=30;break;

case 2:if((year % 4 ==0) && (year % 100 !=0) ||(year % 400==0))

days=29;

else days=28;

}

printf("%d\n",days);

}

花多少钱买衣服

周末商场促销呢,某品牌服装既可以买套装,也可以买单件。若买的不少于50套,每套80元;不足50套的每套90元,只买上衣每件60元,只买裤子每条45元。编写程序,输入计划购买的上衣数量 a 和裤子的数量 b ,计算并输出应该付的款m 。

#include<>

void main()

{

int a,b,y;

scanf("%d%d",&a,&b);

if(b<=a&&b<50)

y=90*b+(a-b)*60;

if(b<=a&&b>=50)

y=80*b+(a-b)*60;

if(a

y=90*a+(b-a)*45;

if(a=50)

y=80*a+(b-a)*45;

printf("%d\n",y);

}

到邮局去寄包裹

你去邮局给朋友寄礼物。发现邮局对邮寄包裹的费用是这样规定的:如果包裹长宽高任意一个尺寸超过1米,或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费元,不同重量的邮资按下表计算:重量(千克)

收费标准(元)

小于10

0. 80

大于等于10但不超过20

0. 75

大于等于20但不超过30

0. 70

编写程序,输入包裹的长、宽、高尺寸和重量,输出所需的邮资(输出结果中包含两位小数即可),超出尺寸或重量的输出"Error”.

#include<>

void main()

{

float a,b,c,m,y;

scanf("%f,%f,%f,%f",&a,&b,&c,&m);

if(a>1||b>1||c>1||m>30)

printf("Error\n");

else {

if(m<10)

y=*m+;

else if(m<20)

y=*m+;

else

y=*m+;

printf("%.2f\n",y);

}

}

输出星期几的英文表示

输入用数字(1--7)表示的星期几,输出星期几的英文表示,输入的数字有误,输出单词"Error(回车)"。#include<>

void main()

{

int a;

scanf("%d",&a);

switch((int)(a))

{

case 1:printf("Monday\n");break;

case 2:printf("Tuesday\n");break;

case 3:printf("Wednesday\n");break;

case 4:printf("Thursday\n");break;

case 5:printf("Friday\n");break;

case 6:printf("Saturday\n");break;

case 7:printf("Sunday\n");break;

default:printf("Error\n");

}

}

输出一行星号

编写程序在一行中输出N 个星号。

输入:N值

输出:一行中N个星号

#include <>

int main()

{

int n,i;

scanf("%d",&n);

for(i=0;i

putchar('\n');

return 0;

}

打印平行四边形

输入图形的高n 和首字符 c ,输出如下例(n=5 ,c='A' )所示的图形.

ABCDE

BCDEF

CDEFG

DEFGH

EFGHI

输入:整数n例如 5 和某个字符例如 A

输出:高为5和首字符A 的平行四边形

#include<>

void main()

{ int n,m,i,d;

char p,t;

scanf("%d,%c",&n,&p);

for(m=0;m

{

for(i=0;i

{

printf(" ");

}

for(d=0;d

{

t=p+d+m;

printf("%c",t);

}

for(i=0;i

{

printf(" ");

}

printf("\n");

}

}

空心的倒三角型

背景:请根据要求打印可空心倒三角形。

输入:输入三角形的高度(h >0)。

输出:打印相应的空心倒三角形。图样参见测试用例。

#include <>

#include <>

int main()

{int h,i,j,k,m,n;

scanf("%d",&h);

if((h>1)&&(h%2!=0))

{

for(i=1; i<=(2*h-1); i++)

{

printf("*");

}

printf("\n");

for(j=1; j<=(h-2); j++)

{

for(k=1; k<=j; k++)

{

printf(" ");

}

printf("*");

for(m=1; m<=(2*h-3-2*j); m++)

{

printf(" ");

}

printf("*");

printf("\n");

}

for(n=1;n<=(h-1);n++)

{

printf(" ");

}

printf("*\n");

}

else

printf("Invalid input\n");

return 0;

}

选做打印实心正方形

题中你已经打印了一行*号,这次在屏幕上输出一个由星号组成的n 行n 列的正方形。

程序输入n 值,输出如下例(n=4 )所示的高和上底均为n 的正方形:

****

****

****

****

#include <>

#include <>

int main()

{

int a=1,n,b;

scanf("%d",&n);

while(a<=n)

{

b=1;

do

{

printf("*");

b++;

}

while(b<=n);

printf("\n");

a++;

}

return 0;

}

选做空心字符菱形

输入:菱型起始字母和菱形的高度。

输出:参看测试用例,打印空心的由字符组成的菱形。

#include <>

#include <>

int main()

{

char ch;

int n,a=1,b,c;

scanf("%c %d",&ch,&n);

while(a<=n)

{

b=1;

while(b<=n-a)

{

printf(" ");

b++;

}

printf("%c",ch);

c=1;

if(a>=2)

{

while(c<=2*a-3)

{

printf(" ");

c++;

}

printf("%c",ch);

}

ch=ch+1;

printf("\n");

a++;

}

a=1; ch=ch-2;

while(a<=n-1)

{

b=1;

while(b<=a)

{

printf(" ");

b++;

}

printf("%c",ch);

c=1;

if(a<=n-2)

{

while(c<=2*n-2*a-3)

{

printf(" ");

c++;

}

printf("%c",ch);

}

ch=ch-1;

printf("\n");

a++;

}

return 0;

}

选做输出一个字母K吧!

输入一个整数n,输出图形K。如n=4时,输出如下图形。

* *

* *

* *

*

* *

* *

* *

#include <> #include <>

int main()

{

int n,i=1,j;

scanf("%d",&n);

while(i<=n-1)

{

j=1;

printf("*");

while(j<=n-i)

{

printf(" ");

j++;

}

printf("*\n");

i++;

}

printf("*\n");

i=1;

while(i<=n-1)

{

j=1;

printf("*");

while(j<=i)

{

printf(" ");

j++;

}

printf("*\n");

i++;

}

return 0;

}

选做输出X图形

输入n 值,输出下例(n=3 )所示的图形:* *

* *

*

* *

* *

输入:整数n(例如3)

输出:如上图所示X 形图形

#include <>

#include <>

int main()

{

int n,i=1,j,k;

scanf("%d",&n);

while(i<=n-1)

{

j=1;

while(j<=i-1)

{

printf(" ");

j++;

}

printf("*");

k=1;

while(k<=2*n-2*i-1)

{

printf(" ");

k++;

}

printf("*");

j=1;

while(j<=i-1)

{

printf(" ");

j++;

}

printf("\n");

i++;

}

i=1;

while(i<=n-1)

{

printf(" ");

i++;

}

printf("*");

i=1;

while(i<=n-1)

{

printf(" ");

i++;

}

printf("\n");

i=1;

while(i<=n-1)

{

j=1;

while(j<=n-i-1)

{

printf(" ");

j++;

}

printf("*");

k=1;

while(k<=2*i-1)

{

printf(" ");

k++;

}

printf("*");

j=1;

while(j<=n-i-1)

{

printf(" ");

j++;

}

printf("\n");

i++;

}

return 0;

}

选做输出图形

编程,输入n 值,输出下例(n=5 )所示的高为n 的图形:

#include <>

#include <>

int main()

{

int n,i=1,j,k,l;

scanf("%d",&n);

while(i<=n-1)

{

j=1;

while(j<=i)

{

printf("*");

j++;

}

k=1;

while(k<=2*n-2*i-1)

{

printf(" ");

k++;

}

l=1;

while(l<=i)

{

printf("*");

l++;

}

printf("\n");

i++;

}

i=1;

while(i<=2*n-1)

{

printf("*");

i++;

}

printf("\n");

return 0;

}

选做画个空心的梯形吧

编程,输入n ,输出如下例(n=5 )所示的高和上底均为n 的等腰空心梯形。

#include <>

#include <>

int main()

{

int n,i=1,j,k;

scanf("%d",&n);

while(i<=n)

{

j=1;

while(j<=n-i)

{

printf(" ");

j++;

}

printf("*");

if(i==1)

{

for(k=1; k<=n-2; k++)

printf("*");

}

else if(i==n)

{

for(k=1; k<=3*n-4; k++)

printf("*");

}

else

{

for(k=1; k<=n+2*i-4; k++)

printf(" ");

}

printf("*");

j=1;

while(j<=n-i)

{

printf(" ");

j++;

}

printf("\n");

i++;

}

return 0;

}

选做输出菱形图案

输入n ,输出如下例(n=3 )所示的菱形:*

***

*****

***

*

#include <>

#include <>

int main()

{

int n,i,j,k;

scanf("%d",&n);

for(i=1; i<=n; i++)

{

for(j=1; j<=n-i; j++)

{

printf(" ");

}

for(k=1; k<=2*i-1; k++)

{

printf("*");

}

printf("\n");

}

for(i=1; i<=n-1; i++)

{

for(j=1; j<=i; j++)

{

printf(" ");

}

for(k=1; k<=2*n-2*i-1; k++)

{

printf("*");

}

printf("\n");

}

return 0;

}

最大公约数

输入两个正整数m和n,求它们的最大公约数和最小公倍数

比如,输入m和n的值分别为14和21,则最大公约数为7,最小公倍数为42。

#include<>

void main()

{

int m,n,i,j;

scanf("%d%d",&m,&n);

for(i=m;i>=1;i--)

{

if (n%i==0&&m%i==0)

{printf("the greatest common divisor is %d\n",i); break;

}

}

for (j=m;;j++)

{

if (j%m==0&&j%n==0)

{printf("the least common multiple is %d\n",j); break;

}

}

}

水仙花数

输出所有的水仙花数。所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如153

是一水仙花数,因为153=13+53+33

输出语句:printf("%d\n",n);

#include <>

void main()

{

int n, i, j, k;

for(n=100; n<=999; n=n+1)

{

i = n/100; n",n,c);

return 0;

}

看看是谁做的好事

某四位同学中有一个做了好事, 不留名, 表扬信来了,校长问是谁做的好事. 以下四个人中有三个人说的是真话.

A 说: 不是我

B 说: 是C

C 说: 是D

D 说: 他说的不对!

编写程序:输出是谁做的好事,只输出对应的大写字母,输出格式printf("%c\n",ch);。

#include <>

#include <>

int main()

{

char ch;

for(ch='A'; ch<='D'; ch++)

{

if(ch=='A'&&ch=='C'&&ch=='D'&&ch!='D')

printf("%c\n",ch);

if(ch!='A'&&ch!='C'&&ch=='D'&&ch!='D')

printf("%c\n",ch);

if(ch!='A'&&ch=='C'&&ch!='D'&&ch!='D')

printf("%c\n",ch);

if(ch!='A'&&ch=='C'&&ch=='D'&&ch=='D')

printf("%c\n",ch);

}

}

贪吃的猴子

有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一半加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。

输入:天数n

输出:第一天的桃子个数,输出语句为printf("The monkey got %d peachs in first day.\n",sum); Smaple:

Input:

5 Output

The monkey got 114 peachs in first day.

#include <>

#include <>

int main()

{

int n,i;

long int m=1;

scanf("%d",&n);

for(i=1; i<=n-1; i++)

{

m=(n-i+m)*2;

}

printf("The monkey got %d peachs in first day.\n",m);

return 0;

}

百马百担

有100匹马,驮100担货,其中大马驮3担,中马驮2担,两匹小马驮1担

输入:无

输出:大、中、小马的个数,用逗号分隔。例如:2,30,68

说明:大、中、小马都必须有,结果中要列出所有的组合可能每个结果占一行因为有多个结果,结果的排序按照大马的个数从少到多

#include <>

void main()

{int x,y,z;

for(x=1;x<33;x++)

for(y=1;y<50;y++)

{z=(100-3*x-2*y)*2;

if(x+y+z==100)

printf("%d,%d,%d\n",x,y,z);

}

}

四大湖问题

我国有4大淡水湖。

A说:洞庭湖最大,洪泽最小。鄱阳湖第三。

B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。

C说:洪泽湖最小,洞庭湖第三。

D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。

4个人每人仅答对了一个,请你编程给出4个湖从大到小的顺序。

#include <>

#include <>

int main()

{

int a,b,c,d;

for(a=1; a<=4; a++)

for(b=1; b<=4; b++)

{

if(b==a) continue;

for(c=1; c<=4; c++)

{

if(c==a||c==b) continue;

for(d=1; d<=4; d++)

{

if(d==a||d==b||d==c) continue;

if((b==1||d==4||a==3)==1&&(d==1||b==4||a==2||c ==3)==1&&(d==4||b==3)==1&&(a==1||c==4||d==2| |b==3)==1)

{

if(a==1) printf("鄱阳湖\n");

if(a==2) printf("鄱阳湖\n");

if(a==3) printf("鄱阳湖\n");

if(a==4) printf("鄱阳湖\n");

if(b==1) printf("洞庭湖\n");

if(b==2) printf("洞庭湖\n");

if(b==3) printf("洞庭湖\n");

if(b==4) printf("洞庭湖\n");

if(c==1) printf("太湖\n");

if(c==2) printf("太湖\n");

if(c==3) printf("太湖\n");

if(c==4) printf("太湖\n");

if(d==1) printf("洪泽湖\n");

if(d==2) printf("洪泽湖\n");

if(d==3) printf("洪泽湖\n");

if(d==4) printf("洪泽湖\n");

break;

}

}

break;

}

break;

}

return 0;

}

选做黑色星期五

在西方,星期五和数字13 都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的13日又恰逢星期五就叫“黑色星期五”。输入某年年号和该年的元旦是星期几(1-7),输出该年所有的“黑色星期五”的日期(年/月/日)。

输入:4位年号和该年元旦是星期几

输出:所有的“黑色星期五”的日期(年/月/日)#include <>

#include <>

int main()

{

int y,m,d,x;

scanf("%d %d",&y,&x);

for(m=1; m<=12; m++)

{

if(m==1||m==3||m==5||m==7||m==8||m==10||m ==12)

{

for(d=1; d<=31; d++)

{

if(d==13&&x==5)

printf("%d/%d/%d\n",y,m,d);

x++;

if(x==8)

x=1;

}

}

if(m==4||m==6||m==9||m==11)

{

for(d=1; d<=30; d++)

{

if(d==13&&x==5)

printf("%d/%d/%d\n",y,m,d);

x++;

if(x==8)

x=1;

}

}

if(((y%4==0&&y%100!=0)||y%400==0)&&m==2)

{

for(d=1; d<=29; d++)

{

if(d==13&&x==5)

printf("%d/%d/%d\n",y,m,d);

x++;

if(x==8)

x=1;

}

}

if(y%4!=0&&m==2)

{

for(d=1; d<=28; d++)

{

if(d==13&&x==5)

printf("%d/%d/%d\n",y,m,d);

x++;

if(x==8)

x=1;

}

}

}

return 0;

}

选做抓疑犯

某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:

(1) A 、 B 至少有一人作案;

(2)A 、E 、 F 三人中至少有两人参与作案;(3)A 、 D 不可能是同案犯;

(4)B 、C 或同时作案,或与本案无关;

(5) C 、 D 中有且仅有一人作案;

(6)如果 D 没有参与作案,则 E 也不可能参与作案。

试编一程序,将作案人找出来。

输出格式为(以下结果不是最终答案):

A:不是罪犯

B:是罪犯

C:是罪犯

D:不是罪犯

E:不是罪犯

F:是罪犯

#include <>

#include <>

int main()

{

int A,B,C,D,E,F;

for(A=0; A<=1; A++)

for(B=0; B<=1; B++)

for(C=0; C<=1; C++)

for(D=0; D<=1; D++)

for(E=0; E<=1; E++)

for(F=0; F<=1; F++)

if(A+B>=1&&A+E+F>=2&&A+D==1&&(B+C==0||B+C= =2)&&C+D==1&&(D+E==0||D+E==2))

{

if(A==1)

printf("A:是罪犯\n");

if(A==0)

printf("A:不是罪犯\n");

if(B==1)

printf("B:是罪犯\n");

if(B==0)

printf("B:不是罪犯\n");

if(C==1)

printf("C:是罪犯\n");

if(C==0)

printf("C:不是罪犯\n");

if(D==1)

printf("D:是罪犯\n");

if(D==0)

printf("D:不是罪犯\n");

if(E==1)

printf("E:是罪犯\n");

if(E==0)

printf("E:不是罪犯\n");

if(F==1)

printf("F:是罪犯\n");

if(F==0)

printf("F:不是罪犯\n");

}

return 0;

}

选做零钱换整钱

小明去银行存钱,拿了一堆硬币。已知1 角的硬币厚度为, 5 角的硬币厚, 1 元的硬币为。小明将 1 角的硬币放成一摞,将 5 角的硬币硬币放成一摞,将 1 元的硬币放成一摞,发现 3 摞硬币一样高。银行正好把这些硬币换成若干张面值为10 元的纸币。问小明至少带了多少钱的硬币(元为单位),每种面值的硬币有多少个?

输入:无

输出:1 角的数量,5 角的数量,1元的数量,总金额。(例如:20,30,40,50)

说明: 在结果中只输出各个对应的数字即可

#include <>

#include <>

int main()

{

int a,b,c,d;

for(a=1; a<=100; a++)

for(b=1; b<=100; b++)

for(c=1; c<=100; c++)

if(20*a==15*b&&20*a==18*c)

{

d=(a*10+b*5+c)%100;

if(d!=0)

break;

d=(a*10+b*5+c)/10;

printf("%d,%d,%d,%d\n",c,b,a,d);

}

return 0;

}

选做马戏团观众人数

一个马戏团表演,n 个座位全满,全部门票收入是120 元,现在知道,男人每人5 元,女人每人2 元,小孩每人 1 角。编程,输入总人数n ,输出满足要求的男人、女人和小孩人数的全部方案。若n 人无法满足条件,则输出“No output\n”。

输入:人数n

输出:男人、女人和小孩人数

#include <>

#include <>

int main()

{

int n,a,b,c;

scanf("%d",&n);

for(a=0; a<=24; a++)

for(b=0; b<=(120-5*a)/2; b++)

for(c=0; c<=(120-5*a-2*b)*10; c++)

if(5*a+2*b+c/10==120&&a+b+c==n)

printf("%d %d %d\n",a,b,c);

return 0;

}

选做爱因斯坦的数学题

爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶?

输出语句格式为:printf("Stairs number = %d\n",number);

#include <>

#include <>

int main()

{

int number;

for(number=1; number<=1000; number++) if(number%2==1&&number%3==2&&number%5==4 &&number%7==0)

{

printf("Stairs number = %d\n",number);

break;

}

return 0;

}

选做抓交通肇事犯

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方,请根据以上线索求出车号。

#include <>

#include <>

int main()

{

int a,b,c,n;

for(a=0; a<=9; a++)

for(b=0; b<=9; b++)

if(a!=b)

{

n=1100*a+11*b;

for(c=30; c<1000; c++)

if(n==c*c)

printf("The license plate is:%d\n",n);

}

return 0;

}

求和

输入整数m 和正整数n ,按下列公式计算s :s=m-(m+1)+m+2-(m+3)+ ……+(-1)n(m+n) 。

输入:m 和n

输出:s

#include <>

int main()

{

int i,sign=1,m,n,s=0,t;

scanf("%d%d",&m,&n);

for (i=0;i<=n;i++)

{

t=sign*(m+i);

sign=-sign;

s=s+t;

}

printf("s=%d\n",s);

}

计算SUM的值

已知公式:SUM = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n

输入:n

输出:表达式sum 的值。结果保留 6 位小数

#include <>

int main()

{

int i,n;

float s = , t;

scanf("%d", &n);

for (i=1;i<=n;i++)

{

t=i;

s+=t;

}

printf("sum=%.6f\n",s);

return 0;

}

迭代法

用迭代法求.求平方根的迭代公式为:

要求前后两次求出的x的差的绝对值小于10-5。#include<>

#include<>

int main()

{

double x1,x2,a;

scanf("%lf",&a);

{

x2=;

do

{

x1=x2;

x2=*(x1+a/x1);

}

while(fabs(x2-x1)>=1e-5);

printf("The square root of %.2f is %.5f\n",a,x2);

}

return 0;

}

分数序列

有一个分数序列:...............,输入整数n,求出其前n项的和。

输出语句格式为:printf("sum=%\n",s);

#include<>

int main()

{

int a,b,c,n,i;

double s;

scanf("%d",&n);

a=2,b=1,s=0;

for (i=1;i<=n;i ++)

{

s+=*a/b);

c=b;

b=a;

a=a+c;

}

printf("sum=%\n",s);

return 0;

}

求e的值

编写程序,从键盘输入整数n , 求 e 的值. e=1+1/1!+1/2!+1/3!+..+1/n! 注意:用double 型数据计算输出语句:printf("e=%lf\n",e);

#include <>

int main()

{

double e=,f=;

int n,i;

scanf("%d",&n);

for(i=1;i<=n;i++)

{

f=f/i;

e=e+f;

}

printf("e=%lf\n",e);

}

编程计算

编写程序,输入n的值,求:1-1/2+1/3-1/4+1/5-1/6+1/7-...+1/n (保留四位小数) #include <>

int main()

{

int i, sign = 1, n;

float s = , t;

scanf("%d", &n);

for (i = 1; i <= n; i ++)

{ t = / (sign * i); sign = -sign; s += t; }

printf("sum=%.4f\n", s);

return 0;

}

cos(x)-x=0

利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。

Xn+1=cos(Xn)

迭代步骤如下:

(1)取X1初值为;

(2)X0=X1,把X1的值赋给X0;

(3)X1=cos(X0),求出一个新的X1;

(4)若X0-X1的绝对值小于,执行步骤(5),否则执行步骤(2);

(5)所求X1就是方程cos(X)-X=0的一个实根,输出X0,输出语句为printf("x=%f",x);。

#include<>

#include<>

int main()

{

double x1,x2;

scanf("%d\n",&x1);

x2=cos(x1);

while(fabs(x2-x1)>

{

x1=x2;

x2=cos(x1);

}

printf("x=%f\n",x2);

}

选做SIX+SIX+SIX=NINE+NINE

计算出自然数SIX和NINE(它们满足的条件是SIX+SIX+SIX=NINE+NINE)的个数cnt。其中的S,I,X,N,E各代表一个十进制数字。输出语句:printf("cnt=%d\n",cnt);

#include <>

#include <>

int main()

{

int S,I,X,N,E,cnt=0;

for(S=1; S<=9; S++)

for(I=0; I<=9; I++)

for(X=0; X<=9; X++)

for(N=1; N<=9; N++)

for(E=0; E<=9; E++)

if(3*(100*S+10*I+X)==2*(1010*N+100*I+E))

cnt++;

printf("cnt=%d\n",cnt);

return 0;

}

选做C减式

编程,求解下列算式中各字母所代表的数字并输出。

PEAR

-ARA

───────

PEA

#include <>

#include <>

int main()

{

int p,e,a,r,n,c,b;

for(n=1000;n<=9999;n++)

{

p=n/1000;

e=n/100%10;

a=n/10%10;

r=n%10;

c=101*a+10*r;

b=100*p+10*e+a;

if(n-c==b)

break;

}

printf("pear=%d\n",n);

return 0;

}

选做求A的值

求满足A*B=N,使A+B最小,且A,B(A<=B)为正整数的A的值。

输入:正整数N

输出:满足条件的A

#include <>

#include <>

#include <>

int main()

{

int n, a, b, i, j;

scanf ("%d", &n);

a = sqrt (n);

b = sqrt (n);

for (i = a; i >= 0; i--)

{

for (j = b; j <= n; j++)

{

if ( (n == i * j) && (n % i == 0) && (n % j == 0) && (i + j >= 2 * a))

break;

}

if ( (n == i * j) && (n % i == 0) && (n % j == 0) && (i + j >= 2 * a))

break;

}

printf ("%d\n", i);

return 0;

}

选做求一个三位数,其值等于其各位阶乘之和

编写程序,求某三位数,该数值的大小正好是组成这个数的三个位上的数字阶乘之和。

输出格式:printf("%d\n",num);

#include<>

int main()

{int a,b,c,i,j,k,s1,s2,s3;

for(a=1;a<=9;a++)

for(b=1;b<=9;b++)

for(c=1;c<=9;c++)

{s1=1;s2=1;s3=1;

for(i=1;i<=a;i++)

s1*=i;

for(j=1;j<=b;j++)

s2*=j;

for(k=1;k<=c;k++)

s3*=k;

if(100*a+10*b+c==s1+s2+s3)

printf("%d\n",s1+s2+s3);}

}

选做谁的饭量大

3个人比饭量大小,每人说了2句话。

A说:B比我吃得多,C和我吃得一样多。

B说:A比我吃得多,A也比C吃得多。

C说:我比B吃得多,B比A吃得多。

事实上饭量越小的人讲对的话越多。请编写程序按A、B、C的顺序输出3个人的饭量排名(排名越大,饭量越大)。

#include<>

void main()

{

int A,A1=0, B,B1=0, C,C1=0;

for(A=0; A<3;A++)

for(B=0; B<3;B++)

for(C=0; C<3;C++)

{

A1 += B-A>0?1:0; A1+=(C==A?1:0);

B1 += A-B>0?1:0; B1+=A-C>0?1:0;

C1 += C-B>0?1:0; C1+=B-A>0?1:0;

if((A-C)*(C1-A1)>0||(A-C==0&&C1-A1==0))

if((B-C)*(C1-B1)>0||(B-C==0&&C1-B1==0))

if((B-A)*(A1-B1)>0||(B-A==0&&A1-B1==0))

{

printf("A:%d\n",A+1);

printf("B:%d\n",B+1);

printf("C:%d\n",C+1);

}

A1=0; B1=0; C1=0;

}

}

选做跳水排名

五位跳水选手将参加10m高台跳水,有好事者让5人据实力预测比赛结果。

A选手说:B第二,我第三。

B选手说:我第二,E第四。

C选手说:我第一,D第二。

D选手说:C最后,我第三。

E选手说:我第四,A第一。

决赛成绩公布之后,每位选手的预测都只说对一半,请编程输出比赛的实际名次。

#include<>

void main()

{

int a,b,c,d,e;

for(a=1;a<=5;a++)

for(b=1;b<=5;b++)

for(c=1;c<=5;c++)

for(d=1;d<=5;d++)

for(e=1;e<=5;e++)

if((b==2)+(a==3)==1&&(b==2)+(e==4)==1&&(c==1)+(d ==2)==1&&(c==5)+(d==3)==1&&(e==4)+(a==1)==1&& a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e& &c!=d&&c!=e)

lf\nThe tenth is:%.3lf\n",s,h);

}

选做ABC各教哪门课

A、B、C是小学老师,各教2门课,互不重复。共有如下6门课:语文、算术、政治、地理、音乐和美术。已知:

(1)政治老师和算术老师是邻居。

(2)地理老师比语文老师年龄大。

(3)B最年轻。

(4)A经常对地理老师和算术老师讲他看过的文学作品。

(5)B经常和音乐老师、语文老师一起游泳。

请编程输出A、B、C各教哪两门课。

#include<>

int main()

{

int w,s,z,d,y,m; d\n",q,p);q++,k++;};

}

if(k==0) printf("No output\n");

}

选做分数的四则运算

在小学时我们就学习了分数的四则运算,即对两个分数进行加、减、乘、除等运算,现在我们尝试下用C语言来实现。

输入:分数1 操作符分数2

输出:计算结果

要求:计算结果使用分数表示,并且为最简化。例如结果为2/6,则被简化为1/3

#include<>

#include<>

main()

{

int a,b,c,d,i,x,y;

char op;

scanf("%d/%d%c%d/%d",&b,&a,&op,&d,&c);

if(a==0||c==0) exit(0);

if(op=='+'){y=b*c+d*a;x=a*c;}

if(op=='-'){y=b*c-d*a,x=a*c;}

if(op=='*'){y=b*d;x=a*c;}

if(op=='/'){y=b*c;x=a*d;}

if(y==0&&x!=0)

{ printf("%d/%d%c%d/%d=0\n",b,a,op,d,c); }

else if(x==0) exit(0);

if(x>y) i=y;

while(i>1)

{

if(x%i==0&&y%i==0){x=x/i;y=y/i;continue;}

i--;

}

if(x/i==1)

printf("%d/%d%c%d/%d=%d\n",b,a,op,d,c,y);

else

printf("%d/%d%c%d/%d=%d/%d\n",b,a,op,d,c,y,x);

}

谁能出线

背景:电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数(0~100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。输入:按顺序给出一个小组10个人的最后得分(int)。

输出:能够出线的学生序号(0~9)。

#include <>

#define N 10

int main()

{

int a[N];

int i,max;

for(i=0;i<=9;i++)

{

scanf("%d",&a[i]);

}

max=a[0];

for(i=0;i<=9;i++)

{

if(max

{

max=a[i];

}

}

for(i=0;i<=9;i++)

{

if(max==a[i])

printf("%d\n",i);

}

return 0;

}

统计素数的个数

求出 2 到m 之间( 含m,m<=1000) 所有素数并放在数组 a 中。

输入:正整数m

输出:从小到大的所有素数,及个数(素数输出的时候用%4d来控制)

如:

输入:10

输出:2 3 5 7

4

#include <>

#define M 1000

int main()

{

int a[M]={0};

int i,j,k,n,cnt=0;

scanf("%d",&n);

for(i=2;i<=n;i++)

{

for(j=2;j

{ if(i%j==0) break; }

if(i==j) {a[i]=i; cnt++;}

}

for(k=0;k

if(a[k]!=0)

printf("%4d",a[k]);

printf("\n%d\n",cnt);

return 0;

}

冒泡法排序

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

编写程序,对输入的十个数按照从小到大排序

#include <>

int main()

{

int a[10];

int i,j,t;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(j=1;j<=10;j++)

{

for(i=0;i<10-j;i++)

if(a[i]<=a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

printf(" %d",a[i]);

}

printf("\n");

}

插入法排序

如果一个数组中保存的元素是有序的(由小到大),向这个数组中插入一个数,使得插入后的数组元素依然保持有序。

定义一个数组,长度为11,初始元素为10个,按照从小到大的方式输入,然后输入一个要插入的元素,使得插入后仍然有序。

#include <>

int main()

{

int a[11];

int i,j,t,n,m;

for(i=0;i<10;i++)

{scanf("%d",&a[i]);}

scanf("%d",&n);

a[10]=n;

m=a[0];

for(i=1;i<11;i++)

if(m>=a[i])

m=a[i];

printf("%d",m);

for(j=1;j<=11;j++)

{

for(i=0;i<11-j;i++)

if(a[i]<=a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

if(a[i]!=m)

printf(" %d",a[i]);

}

printf("\n");

return 0;

}

二维数组

程序定义了4× 4 的二维数组,请编写程序,给二维数组赋值,并使数组下半三角元素中的值乘以n 。

例如:数组中的值为

假设n为10,则输出结果如下:(输出的数按照4位宽度来输出,即%4d)

#include <>

#define M 4

int main()

{

int a[M][M];

int i,j,n;

for(i=0;i<=3;i++)

for(j=0;j<=3;j++)

scanf("%d",&a[i][j]);

scanf("%d",&n);

for(i=0;i<=3;i++)

for(j=0;j<=3;j++)

{

if(j<=i)

a[i][j]=n*a[i][j];

}

for(i=0;i<=3;i++)

{

for(j=0;j<=3;j++)

printf("%4d",a[i][j]);

printf("\n");

}

return 0;

}

在屏幕上显示杨辉三角形

杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。

其实,中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,而贾宪三角的发现就是十分精彩的一页。

杨辉三角有如下性质:

1、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。

2、第n行的数字个数为n个。

3、每个数字等于上一行的左右两个数字之和。

编写程序,输入正数n,将所有数据存储到二维数组中,并在屏幕上显示对应的杨辉三角形(注意数据之间的空格)。例如:n=5 图形如下:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

#include <>

#define M 100

int main()

{

int a[M][M];

int i,j,n;

scanf("%d",&n);

for(i=0;i<=n;i++)

for(j=0;j<=n;j++)

{

if(i==j||j==0)

a[i][j]=1;

}

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i<=n;i++)

{

for(j=0;j<=n;j++)

if(j<=i)

printf("%3d",a[i][j]);

printf("\n");

}

return 0;

}

求二维数组周边元素之和

编写一个程序,求出4×5的二维数组周边元素之和。

输入:二维数组元素

输出:周边元素之和

如:

输入:

1 3 5 7 9

2 9 9 9 4

6 9 9 9 8

1 3 5 7 0

输出:61

#include <>

#define M 4

int main()

{

int a[M][M+1];

int i,j,sum=0;

for(i=0;i<4;i++)

for(j=0;j<5;j++)

scanf("%d",&a[i][j]);

for(i=0;i<4;i++)

for(j=0;j<5;j++)

if(i==0||i==3||j==0||j==4)

sum=sum+a[i][j];

printf("%d\n",sum);

return 0;

}

存储并输出一个矩阵

编程,输入n ,存储并输出如下例(n=5 )所示的图形。

1 2 3 4 5

1 1

2

3 4

1 1 1

2 3

1 1 1 1 2

1 1 1 1 1

#include <>

#define M 100

int main()

{

int a[M][M];

int i,j,n;

scanf("%d",&n);

for(i=0;i

for(j=0;j

{

if(j<=i) a[i][j]=1;

if(j>i) a[i][j]=j-i+1;

}

for(i=0;i

{

for(j=0;j

printf("%2d",a[i][j]);

printf("\n");

}

}

巧分橘子

一家农户以果园为生,一天,父亲拿出一堆橘子,共2520个,准备分给他的6个儿子。父亲按事先写在一张纸上的数字把这堆橘子分完,每个人分到的橘子的个数都不相同。然后他说:“老大,把你分到的橘子分1/8给老二,老二拿到后,连同原来的橘子分1/7给老三,老三拿到后,连同原来的橘子分1/6给老四,以此类推,最后老六拿到后,连同原来的橘子分1/3给老大,这样,你们每个人分到的橘子就一样多了。”问兄弟6人原先各分到多少只橘子。请将兄弟6人的橘子数存储到一维数组中,并按照下列各式输出(下面只提供格式,数据不准确):

x[1]=111

x[2]=222

x[3]=333

x[4]=444

x[5]=555

x[6]=666

#include<>

void main()

{

int a[6],b[6],i;

for(i=0;i<6;i++)

{

a[i]=2520/6;

b[i]=8-i;

}

a[0]=a[0]-(a[5]/(b[5]-1));

for(i=5;i>=1;i--)

{

a[i]=a[i]+(a[i]/(b[i]-1))-(a[i-1]/(b[i-1]-1));

}

a[0]=a[0]*b[0]/(b[0]-1);

for(i=0;i<6;i++)

printf("x[%d]=%d\n",i+1,a[i]);

}

给数组中的元素按顺序编号

对数组a[10] 中的十个整数从小到大进行连续编号,输出各个元素的编号。要求不能改变数组 a 中元素的顺序,且相同的整数要具有相同的编号。例如数组是:A=(5,3,4,7,3,5,6,8,9,10) 则输出为:(4,1,3,7,1,4,6,8,9,10)

#include <>

int main()

{

int a[11],c[11];

int i,j,t,m;

for(i=1; i<11; i++)

{

scanf("%d",&a[i]);

c[i]=a[i];

}

for(j=1; j<=10; j++)

for(i=1; i<11-j; i++)

if(a[i]>=a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

for(m=1; m<11; m++)

for(i=1; i<11; i++)

if(c[m]==a[i])

{

printf("%3d",i);

break;

}

printf("\n");

return 0;

}

选做题大家一起做游戏

幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。规则如下:所有的小朋友绕成一圈,顺序排号,从第一个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,直到只剩下一位小朋友游戏才中止。

每个小朋友都希望自己能有更多的练习数数的机会,所以都希望成为最终被留下的那位。

现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋友。

输入:小朋友的个数(<=50),要被练习的数字

输出:最终被留下的小朋友的序号

说明:如“要被练习的数字”是5,则每次数到5的同学要退出该游戏

#include<>

void main()

{

int N,n,i,s=0,a;

scanf("%d%d",&N,&n);

for(i=2;i<=N;i++)

s=(s+n)%i;

a=s+1;

printf("The left child is NO %d.\n",a);

}

选做题猜数字有如下一组数字,其中每个数字都在 1 ~ 63 之间,1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63

2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 63

4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 63

8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 63

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

现在需要编写一个程序,当从键盘输入某数字在且仅在哪几行出现了,该程序可以“猜”出这个数字是几。

输入:程序的输入是一串以空白符分开的数字,当输入0 时表示输入结束。

输出:输出猜到的数字。

#include<>

#include<>

void main()

{

int i,sum=0;

do

{

scanf("%d",&i);

sum=sum+pow(2,i-1);

}while(i!=0);

printf("%d\n",sum);

}

选做题小蜜蜂

一只小蜜蜂在如下图所示的蜂窝上爬行。它爬行时,只能从一个格爬到相邻的大号格子中。例如,从 1 号格子可以爬到2 号或者 3 号格子,从2 号则可以爬到 3 号或者 4 号格子。

请问从一个格子 a 爬到一个格子 b 一共有多少种可行的路线。

输入:分别是起始点 a 和终止点 b 的编号。( a 和b 在1~100 之间,且a

输出:可行的路线数目

#include<>

void main()

{

int a,b,x,i;

int f[100];

f[1]=1;f[2]=2;

scanf("%d%d",&a,&b);

x=b-a;

if(x==1)

printf("%d\n",f[1]);

if(x==2)

printf("%d\n",f[2]);

C语言上机报告答案

2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() { printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。答案: #include main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y);

x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a 赋给c。(提示:用条件运算符) 答案: #include main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 3、编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3 a/b的余数=10 a/c的余数=15 4. 编译、连接无错,运行后屏幕上显示以下结果: c =-10 实验二顺序结构程序设计 四、程序清单 1.键盘输入与屏幕输出练习 问题1 D 。 问题2 改printf("%c,%c,%d\n",a,b,c);这条语句 改成:printf("%c %c %d\n",a,b,c);

西工大C语言上机考试题库

1:2:3 #include #include int main() { int i=0,j=0,k=0,a=0,b=0,c=0,l=0,m=0,n=0,d=0,p=0,q=0; for(i=1;i<=3;i++) { for(j=1;j<=9;j++) { if(i!=j) { for(k=1;k<=9;k++) { if(k!=j&&i!=k) { a=i*100+j*10+k; b=a*2; c=a*3; l=b%10,d=c%10; m=(b%100)/10,p=(c%100)/10; n=b/100,q=c/100; if(l!=0&&m!=0&&n!=0&&d!=0&&p!=0&&q!=0) if(i!=l&&i!=m&&i!=n&&j!=l&&j!=m&&j!=n&&k!=l&&k!=m&&k!=n) if(i!=d&&i!=p&&i!=q&&j!=d&&j!=p&&j!=q&&k!=d&&k!=p&&k!=q) if(l!=d&&l!=p&&l!=q&&m!=d&&m!=p&&m!=q&&n!=d&&n!=p&&n!=q) printf("%d %d %d\n",a,b,c); } }

} } } 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语言程序基础练习题00道(附答案)

1.下列四组选项中,均不是C语言关健字的选项是( A )。 A) define B) gect C) include D) while IF char scanf go type printf case pow 2.下面四个选项中,均是合法整型常量的选项是( A )。 A)160 B)-0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x 3.下面四个选项中,均是不合法的转义符的选项是( B )。 A) '\"' B) '\1011' C) '\011' D) '\abc' '\\' '\' '\f' '\101' 'xf' '\A' '\}' 'x1f' 4.下面不正确的字符串常量是( A )。 A)'abc' B)"12'12" C)"0" D)" " 5.以下选项中不合法的用户标识符是( A )。 A)abc.c B)file C)Main D)PRINT 6.C语言提供的合法关键字是( D )。 A) swith B) cher C) Case D)default 7.下列标识符组中,合法的用户标识符为 A A)_0123与ssiped B)del-word与signed C)list与*jer D) keep%与wind 8.在C语言中,逻辑值"真"的表示是用( C )。 A) true B) 整型值0 C)非另整型值 D) T 9若有以下定义 char s='\092'; 则该语句( b ) A)使s的值包含一个字符 B)定义不合法,s的值不确定 C)使s的值包含4个字符 D)使s的值包含3个字符 10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。 A)1 B)2 C)8 D)4 11已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为( A )。 A)D B)68 C)不确定的值 D)C 12逻辑运算符两侧运算对象的数据类型是 ( D )。 A) 只是0或1 B) 只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据 13TURBO C中int类型变量所占字节数是( B )。

C语言上机题库百科园第2章!南信大!

第二章 若有数学式3ae bc,则不正确的C语言表达式是() A.3*a*e/b*c B.a/b/c*e*3 C.3*a*e/b/c D.a*e/c/b*3 设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的值为()。 A.4 B.3 C.2 D.1 下列表达式中,不满足"当x的值为偶数时值为真,为奇数时值为假"的要求的是() A.(x/2*2-x)==0 B.!(x%2) C.!(x%2==0) D.x%2==0 表达式18/4*sqrt(4.0)/8值的数据类型为()。 A.char B.double C.不确定 D.float 在C语言中,要求运算数必须是整型的运算符是( ) A.% B./ C.++ D.!= 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。 A.4

C.16 D.52 C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( ) A.必须为下划线 B.必须为字母 C.可以是字母、数字和下划线中的任意一种 D.必须为字母或下划线 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( ) A.不知道a的值,不能确定 B.0 C.2 D.1 判断字符型变量c1是否为数字字符的正确表达式为( ) A.(c1>='0')&&(c1<='9') B.(c1>=0)&&(c1<=9) C.('0'>=c1)||('9'<=c1) D.'0'<=c1<='9' 下面四个选项中,均是合法的用户标识符的选项是()。 A._123 temp INT B.A p_o do C.b-a goto int D.float lao _A 以下关于C语言数据类型使用的叙述中错误的是( ) A.若要处理如"人员工资"的相关数据,单精度类型 B.若只处理"真"和"假"两种逻辑值,应使用逻辑类型 C.若要保存带有多位小数的数据,应使用双精度类型 D.若要准确无误差的表示自然数,应使用整数类型 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。 A.7 B.8 C.6 D.2 下面正确的字符常量是()

中国石油大学(北京)C语言习题册模拟1答案

模拟一 一、选择题(每题2分,共20分) 1、D 2、D 3、A 4、C 5、D 6、A 7、A 8、A 9、C 10、B 二、读程序写结果(每题3分,共21分) 1、9,11,9,10 2、>=60<60error 3、9,3 4、45 5、*+++* +*+*+ ++*++ +*+*+ *+++* 6、7,14 7、hina ina na 三、程序填空(每空2分,共20分) 1、(1) N/2 (2) a[N-1-k] (3) knext=p; p->next=p2; 五、编程题(第1题9分,第2、3题各10分,共29分)

1、定义1分,输出3分,处理5分 main() { int i,i1,i2,i3; for(i=100;i<1000;i++) { i1=i/100; i2=i/10%10; i3=i%10; if(i==i1*i1*i1+i2*i2*i2+i3*i3*i3) printf("%5d",i); } } 2、定义1分,输入2分,输出3分,处理4分 main() { int a[5][6],b[5]={0},i,j; for(i=0;i<5;i++) for(j=0;j<6;j++) scanf("%d",&a[i][j]); for(i=0;i<5;i++) for(j=0;j<6;j++) b[i]=b[i]+a[i][j]; for(i=0;i<5;i++) { for(j=0;j<6;j++) printf("%5d",a[i][j]); printf("%10d\n",b[i]); } } 3、输入1分,输出1分,两个函数各3分,函数调用2分int prime(int m) { int i; for(i=2;ia[j]) { t=a[i]; a[i]=a[j]; a[j]=t;}

C语言上机实验[1]

实验四循环结构程序设计(4学时) 一、实验方式:一人一机 二、实验目的: 1、熟练掌握while语句、do-while语句和for语句。 2、练习并掌握循环结构的嵌套形式。 3、掌握循环结构的程序设计方法。 三、实验内容:说明:前四题为必做题目,后两题为选做题目。 1、从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结 束输入。(实验指导书P41) 2、求所有的水仙花数。水仙花数是一个3位数的自然数,该数各位数的立方和等于该数 本身。(实验指导书P42) 3、判断输入的某个数是否为素数。若是,输出YES,否则输出NO。(实验指导书P167) 4、计算π的近似值。公式如下:π/4=1-1/3+1/5-1/7+……,直到最后一项的绝对值小 于10-6为止。(实验指导书P169) 5、计算1!+2!+……+n! 的值,n值由键盘输入。(实验指导书P176) 6、输入10个整数,统计并输出其中正数、负数和零的个数。 四、实验答案:(代码+运行结果截屏) 实验五综合实验1:结构化程序设计(2学时) 一、实验方式:一人一机 二、实验目的: 1、进一步掌握选择结构、循环结构的编程特点。 2、掌握C语言的结构化程序设计思想。 3、学习利用循环结构实现的一些常用算法(如穷举、迭代、递推等)。 三、实验内容:说明:前两题为必做题目,后两题为选做题目。 1、编一程序,对于给定的一个百分制成绩,输出对应A,B,C,D,E表示的的等级成绩。设: 90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。(实验指导书P162) 2、百马百担问题。(实验指导书P45) 3、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 4、输出如下图案: * *** ***** ******* ***** *** * 四、实验答案:(代码+运行结果截屏)

C语言上机题库

C语言习题集 3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。 输入格式: B 输出格式: 26 #include int main(void) { char ch; int sum; ch=getchar(); sum=ch-'A'+10+15; printf("%d\n",sum); return 0; } 3.12输入三个整数,求其平均值。 输入格式: 3 5 7 输出格式: 5 #include int main(void) { int a,b,c,aver; scanf("%d %d %d",&a,&b,&c); aver=(a+b+c)/3; printf("%d\n",aver); return 0; } 3.13根据c=5/9*(f-32) 公式,输入华氏温度f,求摄氏温度c,结果精确到小数点后两位。 输入格式: 80.0 输出格式: 26.67 #include int main(void) { float f,c; scanf("%f",&f); c=5.0/9*(f-32); printf("%.2f\n",c); return 0; } 3.14输入一个四位正整数,求其各位数字之和。例如,1357的各位数字之和为1 + 3 + 5 + 7 = 16。 输入格式: 1357 输出格式: 16 #include int main(void) { int num; int a,b,c,d,total; scanf("%d",&num); a=num/1000; b=(num-a*1000)/100; c=(num-a*1000-b*100)/10; d=num-a*1000-b*100-c*10; total=a+b+c+d; printf("%d\n",total); return 0; } 3.15输入一大写字母,输出对应的小写字母。 输入格式: A 输出格式: a #include int main(void) { char c1,c2;

中国石油大学(华东)-C语言学习心得

C语言学习心得 开课之前信息的收集:在高中的时候就听过程序员这个职业,当时也只知道这些人是写程序的,然而程序是什么具体我也不知道。终于上大学了,我看到自己的课表上有C程序设计,感到很兴奋,自己终于要开始学程序。于是我问大二的学长学姐C语言学习经验,他们只对我说,有点难学(可能是他们没认真学的原因)要好好学,在老乡会上刚刚找到工作的大四学长对我讲述他求职百度的时候的经历,百度面试官问他说你会什么编程语言,他说会C,C#,java。面试官接着问你最擅长哪个,他说C语言,紧着接面试官问了一系列关于C语言的问题,一个比一个深入,他答不出来,最后的结果就是直接被拒绝。临走的时候百度面试官对他说,只要你能掌握一门编程语言就能要你。学长告诫我,信管会学很多课但都是只知道一点,因此要学既然要学一门编程就要把它学精,哪怕其它的编程语言不擅长也没关系,我现在就后悔当时没好好学。知道这些情况后我决心学好C语言。 开课后学习的经历:第一节课上,老师说由于课程的安排,前四章的知识会讲的很快,对编程有用的就说,还有些理论课下自己看看,介绍了C语言的发展和编程格式输入和输出。紧接着的上机课我写了人生的第一个程序,觉得很有意思,从此就喜欢上了编程,喜欢这种逻辑的推理与设计,课前我会将书上的知识点掌握,然后上课认真听老师讲课,看看自己有没有漏掉什么知识点,书上没说的和老师给的程序要记下来,回来后自己来体验下这个程序。就这样到了期中考试,结果并不好,让我认识到自己不能只停留在programe上,要多做acm上的题目,并且课下要多读别人的代码来学习方法,就这样白天在图书馆里看书,晚上回来编程,两个月后发现有了很大进步,也发现C语言更有趣了。我也很积极报了来年三月份的计算机二级等级考试,虽然只学了一半,但是我想通过自己的学习和请教老师,拿到那个证书应该不是问题,就这样我开始了自学后半部分,发现真的很晕,果然后面不简单。但是我想到每件事开始的时候都是困难的,就这样我坚持了下来,在老师的帮助下我也成功的过了,并且还是优秀,而且由于自己事先学过了,所以下学期的学习并没有特别困难。 通过学习Funcode让我真正的看到了C语言的应用,课上学的只是C语言的理论,而最重要的是应用。经过实验每个函数的功能,掌握每种函数的接口,再根据自己的设计将这些函数通过一定的组合和排列,制作出一个属于自己的动画,这种感觉真的很棒。我都迫不及待地想给我爱看动画的小表弟展示我制作的动画和体验我设计的游戏,虽然这些动画和游戏还比较低级,但我想他看到后一定会很开心。 一年的学习经历不仅让我C语言入门,更教会了我许多许多。教会了我如何自主学习;教会了我只要你肯努力,就能学有所成;教会了我坚持自己所喜欢的,并为之汗水,结果也一定让人满意。感谢老师一年来一直以来对我的指导和教诲,课下牺牲自己休息的时间来为我解答问题,为我提前开放作业题。 结课之后的打算:希望能通过自己的努力进入学校的ACM团队,继续深入的学习C语言,毕竟自己也才入门而已,离精通还很远。同时大二的时候去蹭课学习算法和数据结构来进一步提升自己的编程能力。

C语言上机实验题

第六章循环控制 通过本章实验作业应达目标 1.熟悉while、for、do_while、break、continue语句的作用与使用规范。 2.学习并掌握利用while语句、for语句、do_while语句实现循环结构。 3.掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。 4.进行算法设计训练,能综合所学控制结构语句解决一般问题。 本章必须上交作业 程序6_1.c、6_2.c、6_5.c、6_6.c、6_8.c上传至211.64.135.121/casp。 本章开始,上机实验项目量加大,希望同学们多多自行上机。本章实验项目有余力都可以做一下并上交。 循环程序设计 计算机解决问题都是按指定的顺序执行一系列的动作。按照特定的顺序执行相应的动作来求解问题的过程称为算法。程序中的语句是算法的体现,而算法要解决的是“做什么”和“怎么做”的问题。 计算机程序中指定语句的执行顺序称为“程序控制”。结构化的程序控制包含三种基本结构:顺序结构,选择结构和循环结构。 1. 循环设计 循环是在循环条件为真时反复执行的一组计算机指令,是计算机解题的一个重要结构。循环控制有两种基本方法:计数法和标志法。 1)计数器控制的循环 事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。每循环一次,循环变量的值会递增(增值通常为1或-1),当其值达到终值时结束循环。 教材例6.2、6.3、6.7都是典型的计数器控制的固定次数次数循环。 2)标志控制的循环 事先不知道准确的循环次数,由某一目标值标记循环的结束。如,教材例6.6中以|t|的值达到标记下限值1e-6作为循环的结束。 循环设计时要注意合理设计循环条件,使得循环不会成为死循环。 2. 算法 程序设计的首要工作是算法设计,离开了算法也就没有了程序。算法,是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。 循环主要用来解决程序设计中两类基本的算法:穷举和迭代。 1)穷举 穷举的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。穷举是一种重复型算法,其核心是设计循环,在循环体中依次测试。 例:输入两个正整数x和y,求其最大公约数。 main() {int x,y,i,flag; printf("Please input two numbers:"); scanf("%d%d",&x,&y);

c语言上机题库 (1)

1、给定n 个数据, 求最小值出现的位置(如果最小值 出现多次,求出第一次出现的位置即可)。 2、编写程序求无理数e 的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x 的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他) 6、求出N ×M 整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 15 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n 位自然数的各位数字的积。(n 是小于10的 自然数) 8、计算n 门课程的平均值,计算结果作为函数值返回。 例如:若有5门课程的成绩是:92,76,69,58,88, 则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。 10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。

11、请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列 中最大元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。 12、编写函数fun用比较法对主程序中用户输入的具有10 个数据的数组a按由大到小排序,并在主程序中输出 排序结果。 13、编写main程序调用函数fact求解从m个元素选n 个元 素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。 要求:m不能小于n,否则应有容错处理。 说明:函数fact(x)的功能是求x!。 14、找出一批正整数中的最大的偶数。 15、实现两个整数的交换。 例如:给a和b分别输入:60和65,输入为: a=65 b=60 16、将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 17、求一个四位数的各位数字的立方和。 18、求一组数中大于平均值的数的个数。 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。 19、对任意输入的x,用下式计算并输出y 的值。 5 x<10 y= 0 x=10 -5 x>10 20、求给定正整数m以内的素数之和。 例如:当m=20时,函数值为77。 21、判断整数x是否是同构数。若是同构数,函数返回1; 否则返回0。x的值由主函数从键盘读入,要求不大

C语言常见、经典的上机实验题目

3.3 常见、经典的上机实验题目 1、 /*功能:数组x有十个元素,编程将其元素首尾颠倒。(即第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换…)。*/ main() {int a[10]={5,65,654 ,5 ,5 ,56,588,77,58,5},j,x; for(j=0;j<5;j++) {x=a[j]; a[j]=a[9-j]; a[9-j]=x;} for(j=0;j<10;j++) printf("%d\t", a[j]); } 2、 /*功能:统计输入的一串字符(假设以‘\n’结束)中,大写字母A,B,...,Z各出现的次数。(提示,用一个数组count[26]计数各个字母出现的次数,count[0]表示A出现的次数,count[1]表示B出现的次数,...,count[25]表示字母Z出现的次数。初始时count的各元素值为0。以后,每读入一个字符ch ,若它是一个大写字母,就让相应计数单元count[ch-'A']加1。*/ main( ) {int count[26] ,i; char ch[80]; for(i=0;i<26;i++) count[i]=0; gets(ch); for(i=0;i ='A'&&ch[i]<='Z') count[ch[i]- 'A']++; for(i=0;i<26;i++) printf("%c %d\t", 'A'+i,count[i]); } 3、 /*功能:键盘输入若干数,输出它们的平均值,输入值为-1时,结束输入*/ main( ) {int x,i=1,s; scanf("%d",&x); while(x!=-1) {s=s+x;i++; scanf("%d",&x); } printf("%d\n",s/i); }

C语言上机实验标准答案.doc

实验一上机操作初步 (2 学时 ) 一、实验方式:一人一机 二、实验目的: 1、熟悉 VC++语言的上机环境及上机操作过程。 2、了解如何编辑、编译、连接和运行一个 C 程序。 3、初步了解 C程序的特点。 三、实验内容: 说明:前三题为必做题目,后两题为选做题目。 1、输出入下信息: ( 实验指导书 P79) ************************* Very Good ************************* 2、计算两个整数的和与积。( 实验指导书 P81) 3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。 ( 书 P3) 4、在屏幕上显示一个文字菜单模样的图案: ================================= 1 输入数据 2 修改数据 3 查询数据 4 打印数据 ================================= 5、从键盘上输入两个整数,交换这两个整数。 四、实验步骤与过程: 五、实验调试记录: 六、参考答案: 1、#include <> void main( ) {printf( printf( printf( “ ********************\n “Very Good\n” ); “ ********************\n ” ); ” ); } 2、#include <> void main( ) {int a,b,c,d; printf( “ Please enter a,b: ”);

scanf( “%d,%d” ,&a,&b); c=a+b; d=a*b; printf( “ %d+%d=%d\n” ,a,b,c); printf( “ %d*%d=%d\n” ,a,b,d); } 3、#include <> #include <> void main( ) { double x,s; printf( “ Please input value of x: ”); scanf( “%lf ” ,&x); s=cos(x); printf( “ cos(%lf)=%lf\n ”,x,s); } 4、#include <> void main( ) { printf( “ ==================================\n”); printf( “ 1 输入数据 2 修改数据 \n ”); printf( “ 3 查询数据 4 打印数据 \n ”); printf( “ ===================================\n”); } 5、#include <> void main( ) { int x,y,t; printf( “ Please enter x and y: ”); scanf( “%d%d”,&x,&y); t=x; x=y; y=t; printf( “ After swap:x=%d,y=%d\n ” ,x,y); } 实验二简单的 C程序设计 (4 学时 ) 一、实验方式:一人一机 二、实验目的: 1、掌握 C语言的数据类型。 2、学会使用 C语言的运算符及表达式。 3、掌握不同数据类型的输入输出方法。 三、实验内容: 说明:前四题为必做题目,后两题为选做题目。

c语言上机考试训练题库及答案

上机考试习题集 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 #include double rounding(double x,int n); void main() { double x,x1; int n; printf("请输入一个浮点数:\n"); scanf("%lf",&x); printf("请输入给定的小数位:\n"); scanf("%d",&n); x1=rounding(x,n); printf("圆整后的数为:\n%.*lf\n",n,x1); } double rounding(double x,int n)

C语言_中国石油大学(华东)c语言上机题

Hello world. 让我们用C语言向世界问好。 最早的程序基本是这个样子的: 程序一: #include <> void main() { printf("Hello world.\n"); } 程序二: #include <> int main() { printf("Hello world.\n"); return 0; } 上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。 输入:无 输出:Hello world. #include<> int main() { printf("Hello world.\n"); } Welcome to Beijing. 让我们来练习如何显示多行文字。 输入:无 输出:就是下面的那段文字。 #include<> void main() {printf("Welcome\n"); printf("to\n"); printf("Beijing.\n"); } 练习最简单的printf和scanf printf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。 输入:整型变量x的值。 输出:输出整型变量x对应的十进制、八进制和十六进制形式。 认真观察-1的八进制和十六进制输出,请想想是为什么。 #include <> int main() {int x; scanf("%d",&x); printf("x=%d,",x); printf("x=%o,",x); printf("x=%x\n",x); return 0; } 练习两个整数之间的运算 背景:基本练习。 输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123 444 输出:分别输出进行+、-、*、/、*之后的运行结果。#include<> int main() {int x,y; scanf("%d%d",&x,&y); printf("%d+%d=%d\n",x,y,x+y); printf("%d-%d=%d\n",x,y,x-y); printf("%d*%d=%d\n",x,y,x*y); printf("%d/%d=%d\n",x,y,x/y); printf("%d%%%d=%d\n",x,y,x%y); return 0; } 学习打印你的第一个图形 背景:我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。 程序如下: #include <> int main() { printf("****\n"); printf("****\n"); printf("****\n"); printf("****\n"); return 0; } 要求:按照上面的程序范例,编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。 输入:无。 输出:指定图形。 #include <> int main() { printf(" *\n"); printf(" ***\n"); printf(" *****\n"); printf("*******\n"); return 0; } 整型数的表示范围 编写一个循环程序,输入N 值,输出N 的阶乘。关于循环程序怎么编写,可以参考教材第3章P66页的例题和第5章P82的例题的内容。注意整型数的表示范围,如果当输入的N 比较大时,例如N 等于20 时,输出怎么是负数了?自己想明白吧!#include<> void main() {int N,i; int sum=1;

C语言程序设计_上机实验指导与习题_第三版_(陈湘骥_编著_著)_华南农业大学_参考答案

C语言程序设计上机实验指导与习题 参考答案 (仅供教师内部参考) 华南农业大学

目录 上机实验 (1) 实验 1 C语言程序初步 (1) 一、实验目的 (1) 二、实验内容 (1) 实验2基本数据类型、运算和表达式 (3) 一、实验目的 (3) 二、实验内容 (3) 实验3基本输入与输出 (5) 一、实验目的 (5) 二、实验内容 (5) 实验4选择结构程序设计 (4) 一、实验目的 (4) 二、实验内容 (4) 实验5循环结构程序设计(一) (9) 一、实验目的 (9) 二、实验内容 (9) 实验6循环结构程序设计(二) (15) 一、实验目的 (15) 二、实验内容 (15) 实验7数组 (17) 一、实验目的 (17) 二、实验内容 (17) 实验8字符数组的应用 (22) 一、实验目的 (22) 二、实验内容 (22) 实验9函数的基本应用 (24) 一、实验目的 (24) 二、实验内容 (24) 实验10指针与结构体 (26) 一、实验目的 (26) 二、实验内容 (26) *实验11链表 (29) 一、实验目的 (29) 二、实验内容 (29) *实验12文件 (32) 一、实验目的 (32) 二、实验内容 (32)

上机实验 实验 1 C语言程序初步 一、实验目的 (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序。 (3)通过运行简单的C程序,初步了解C程序的特点。 (4)在教师的指导下,学会使用JudgeOnline实验系统。 二、实验内容 1. 运行第一个 C 程序 [题目:The first C Program] 将下列程序输入 TC(或 VC++),编译、连接和运行该程序。 void main() { printf("The first C Program\n"); } [具体操作步骤] 以 Turbo C 上的操作为例 (1)Windows 进入后,按照第一章中介绍的方法,进入 Turbo C。 (2)在编辑窗口中输入程序。 (3)保存程序,取名为 a1.c。 (4)按照第一章中介绍的方法,编译、连接和运行程序。 2.在JudgeOnline系统中提交实现了计算a+b功能的程序 [题目 1001:计算 a+b] 由键盘输入两个整数,计算并输出两个整数的和。实现该功能的程序如下, void main() { int a, b; scanf("%d%d", &a, &b); 1

C语言上机实验(第四版)参考答案

C语言上机实验(第四版)参考答案 C语言程序设计上机实验指导与习题 参考答案(第四版) (学生改编) 实验 1 C语言程序初步一、实验目的 (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。(2)了解在该系统上如何编辑、编译、连接和运行一个C程序。(3)通过运行简 单的C程序,初步了解C程序的特点。(4)在教师的指导下,学会使用在线 评判系统。 二、实验内容 1. 运行第一个C程序 [题目:The first C Program] 将下列程序输入visual c++ ,编译、连接和运行该程序。 #include\main() { printf(\ } [具体操作步骤] (1)在编辑窗口中输入程序。 (2)保存程序,取名为 a1.c。 (3)按照第一章中介绍的方法,编译、连接和运行程序。 (4)按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”,则该题完成。 2. 在在线评判系统中提交实现了计算a+b功能的程序 [题目1001:计算a+b] 由键盘输入两个整数,计算并输出两个整数的和。实现该功能的程序如下, #include \main() { int a, b;

scanf(\ printf(\ } (1)在程序编辑窗口中输入程序。(2)保存程序,取名为 a2.c。 (3)按照前二章中介绍的方法,编译、连接和运行程序。(4)在程序运行 过程中,输入 15 30↙ (↙表示输入回车符) (5)如果看到如下输出结果,则表明15+30 的结果正确,如果得不到如下结 果,则需检查并更正程序。 45 (6)按照第三章中介绍的方法进入在线评判系统。 (7)显示题目列表,点击题号为1001,题名为“计算a+b”的题目。 (8)查看完题目要求后,点击页面下端的“sumbit”,参照第二章提交程序 的方法提交程序a2.c。 (9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检 查程序是否正确。 3 实验 2 基本数据类型、运算和表达式一、实验目的 (1)掌握C语言数据类型,熟悉如何定义一个整型和实型的变量,以及对它 们赋值的方法。(2)掌握不同的类型数据之间赋值的规律。 (3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是 自加(++)和自减(--)运算符的使用。 (4)进一步熟悉C程序的编辑、编译、连接和运行的过程。二、实验内容 1. 变量的定义 [题目 1117:变量定义,按要求完成程序] 下面给出一个可以运行的程序,但是缺少部分语句,请按右边的提示补充完整 缺少的语句。 #include \ main() { int a, b; /*定义整型变量 a和 b*/ int i, j; /*定义实型变量i和 j*/ a=5; b=6; i=3.14; j=i*a*b; printf(\ } [具体操作步骤]

C语言上机综合实验一及答案

1、编制程序,输入n 个整数(n 从键盘输入,n>0),输出它们的偶数和。 2、 编程,输入n 后:输入n 个数,根据下式计算并输出y 值。 3、输入一行字符,统计并输出其中英文字母、数字字符和其他字符的个数。 4、编写程序,输入一个正整数n ,计算并输出下列算式的值。要求定义和调用函数total(n)计算1+1/2+1/3+……+1/n ,函数返回值的类型是double 。 5、输入一个正整数n ,求1+1/2!+1/3!+……1/n!的值,要求定义并调用函数fact(n)计算n 的阶乘,函数返回值的类型是单精度浮点型。 答案: 程序1、 #include void main () { int n,i,x,sum=0; while(scanf("%d",&n),n<=0); printf ("请输入%d 个数:", n); for (i=1; i<=n ;i++) { scanf("%d",&x); if(x%2==0) sum+=x; } printf ("sum=%d", sum) ; } 程序2、 #include #include void main( ) { int i,n; float x,y; scanf(“%d”,&n); for(i=1;i<=n;i++){ scanf(“%f”,&x); if(x<-2) y=x*x-sin(x); else if(x<=2) y=pow(2,x)+x; else y=sqrt(x*x+x+1); printf(“%f \n”,y); } } 程序3、 # include void main( ) { int letter,digit,other; ?????>++≤≤-+-<-=2 12222sin 22x x x x x x x x y x 111111...23n k s k n ===++++∑

2020年全国计算机等级考试二级c语言上机精选题库(共80套)

2020年全国计算机等级考试二级c语言上机精选题库(共80套) 第1套试题 第一题:给定程序中,函数fun的功能是:计算N*N矩阵的主对角元素和反向对角元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。 例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 #include #define N 4 fun(int t[][N], int n) { int i, sum; ___1___; for (i=0; i

第二题:下列给定程序中,函数fun 的功能是:根据整型参n ,计算如下公式的值。 ,11=A ,1112A +=A ,1123A +=A … ,1 11-A +=A n n 例如,若n=10,则应输出0.617978。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main 函数,不得增行或删行,也不要更改程序的结构! #include #include /********found********/ fun(int n) { double A = 1; int i; /********found********/ for(i=2;i #include void fun (int a, int b, long *c) { }

相关文档
最新文档