最简单的C程序设计
1.实验目的
①掌握C语言中使用最多的一种语句——赋值语句的使用方法。
②掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
2.实验内容和步骤
掌握各种格式转换符的正确使用方法。
①输入程序
main()
{int a,b;
float d,e;
char c1,c2;
double f,g;
longm,n;
unsigned int p,q;
a=16;b=62;
c1='a';c2='b';
d=3.56;e=-6.87;
f=3157.890121;g=0.123456789;
m=50000:n=-60000;
p=32768;q=40000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%1d,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
②运行此程序并分析结果。
③在此基础上,修改程序的第8~13行。
a=b1;b=b2;
c1=a;c2=b;
f=3157.890121;g=0.123456789;
d=f; e=g;
p=a=m=50000;q=b=n=-60000;
运行程序,分析结果。
④改用scanf函数输入数据而不用赋值语句,scanf函数如下。
scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u"
&a,&b,&c1,&c2,&d,&e,&f'&g,&m,&n,&p,&q);
输入的数据如下。
61,62,a,b,3.56,-6.87,3157.890121,0.123456789,50000,-60000,37678,40000
(说明:ld格式符用于输入long型数据)分析运行结果。
⑤在上面的基础上将printf语句改为
printf("a=%d,b=%dknc1=%c,c2=%c\nd=%15.6f,e=%15.12f\n",a,b,c1,c2,d,e);
printf("f=%f,g=%f\nm=%d,n=%d,p=%d,q=%d\n",f,g,m,n,p,q);
运行程序。
⑥将p、q改用%o格式符输出。
⑦将scanf函数中的%lf和%ld改为%f和%d,运行程序并观察分析结果。
3编写程序
①有下面的程序
main()
{
int a;
float b,c;
scanf("%2d%3f%4t",&a,&b,&c);
printf("\na=%d,b=%f,c=%f\n",a,b,c);
}
若从键盘上输入9876543210并回车,则程序的输出结果是______。
②下面程序的输出结果是______。
main()
{int x=5,y=3;
printf("%d\n",y=x/y);
}
③以下程序的输出结果是______。
main()
{
int a=2,b=5;
printf("a=%%d,b=%%d\n",a,b);
}
④以下程序的输出结果是______。
#include"stdio.h"
main()
{
double x=123.123789;
printf("%8.6f,%8.3f,%14.8f\n",x,x,x);
}
⑤以下printf语句中的"-"的作用是______,该程序的输出结果是______。
#include<stdio.h>
main()
{ int x=12;
double a=3.1415926;
printf("%6d##\n",x);
printf("%-6d##\n",x);
printf("%14.10f##\n",a);
printf("%-14.10f##\n",a);
}
⑥以下程序的输出结果是______。
#include<stdio.h>
main()
{int a=325;
double x=3.1415926;
printf("a=%+0.6d x=%+e\n",a,x);
}
⑦编写程序,让用户输入两个整数,输出它们的商和余数。
⑧编程:设圆半径r=1.5,求圆周长、圆面积。用scanf输入数据,输出计算结果,输出开寸要求有文字说明,取小数点后2位数字。
⑨输入一个华氏温度,要求输出摄氏温度。公式为c=5/9(F-32)。输出要有文字说明,取2位小数。
第1题
逻辑结构程序设计
1.实验目的
①了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
②学会正确使用逻辑运算符和逻辑表达式。
③熟练掌握if语句和switch语句。
④结合程序掌握一些简单算法。
⑤学习调试程序。
2.实验内容
本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。
3.程序编写
①下面程序实现:输入三个整数,按从大到小的顺序进行输出。请在if后的()内填入正确内容。
main()
{int x,y,z,c;
scanf("%d%d%d",&x,&y,&z);
if( )
{c=y;y=z;z=c;}
if( )
{c=x;x=z;z=c;}
if( )
{c=x;x=y;y=c;}
printf("%d,%d,%d",x,y,z);
}
②以下程序实现:输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母:其他字符不变。请在()内填入正确内容。
main()
{char ch;
scanf("%c",&ch);
if( )ch=ch+32;
else if(ch>='a'&&ch<='z')( )
printf("%c",ch);
}
③试编程判断输入的正整数是否既是5的整数倍又是7的整数倍。若是,则输出yes;否则输出no。
④编程实现:有3个整数a,b,c,由键盘输入,输出其中最大的数。
⑤给出100分制成绩,要求根据成绩的多少,输出成绩等级“A”、“B”、“C”、“D”、“E”。90分以上为“A”,80~89分为“B”,70~79分为“C”,60~69分为“D”,60分以下为“E”。用switch语句进行编程。
第2题
循环控制
1.实验目的
①熟悉掌握用while语句,do-while语句和for语句实现循环的方法。
②掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
③进一步学习调试程序。
2.实验内容
编程序并上机调试运行。
①逐个检查1到200的所有整数,求1到200之间的完全平方数。
②判断一个整数是否为素数。
③由标准输入读一行字符,输出各个字符的编码。
④统计由标准输入得到的文件中字符的个数。
⑤统计输入数据的个数,找出其中的最小值和最大值。
⑥分别统计输入文件中的空格、行、数字、花括号以及其他所有字符的个数。
⑦打印Fibonacci序列前30个数。
⑧填出下列程序的运行结果。
main()
{int k=0;char c='A';
do
{ switch(c++)
{case'A':k++;break;
case'B':k--;
case'c':k+=2; break;
case'D':k=k%2; contlnue;
case'E':k=k*10;break;
default:k=k/3;
}
k++;
}
while(c<'G');
prinff("k=%d\n",k);
}
⑨若运行以下程序时,从键盘输入3.6 2.4<CR> (<CR>表示回车),写出程序的运行结果。
#include<math.h>
main()
(float x,y,z;
scanf("%f%f",&x,&y);
z=x/y
while(1)
{if(fabs(z)>1.0) {x=y;y=z:z=x/y:}
else break;
}
printf("%f\n",y);
}
⑩编写程序,从键盘输入6名学生的5门成绩,分别求出每个学生的平均成绩,并依次输出。
编程求1!+2!+3!+4!+……………+19!+20!。
找出1000之内的所有完数。
输出9*9口诀。
打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,冈为153=13+53+33。
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。求猴子第一天共摘了多少个桃子。
要求编写程序使得在屏幕上输出如下图形。
第3题
数组
1.实验目的
①掌握一维数组和二维数组的定义、赋值和输入输出的方法。
②掌握字符数组和字符串函数的使用。
③掌握与数组有关的算法(特别是排序算法)。
2.实验内容
编程序并上机调试运行。
①以下程序运行后的输出结果是______。
main()
{int a[4][4]={{1-2,-3,-4}, {0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
int i,j,s=0;
for(i=0;i<4;i++)
{,for(j=0;j<4;j++)
{if(a[i][j]<0)continue;
if(a[i][j]==0)break;
s+=a[i][j];
}
}
printf("%d\n",s):
}
②以下程序运行后的输出结果是______。
main()
{int i,n[]={0,0,0,0,0);
for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
}
③以下程序运行后的输出结果是______。
main()
{int i,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)a [j][i]=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
}
④求出任何n×5的数组中所有数据的平均值。
⑤若有说明:int a[2][3]={{1,2,3},{4,5,6}};现要将a的行和列的元素互换后存入另一个二维数组b中。
⑥通过循环按行顺序为一个5*5的二维数组a赋1到25的自然数,然后输出该数组的左下半角。
⑦试编程打印出5*5的螺旋方阵。
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
⑧某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
第4题
函数
1.实验目的
①掌握定义函数的方法。
②掌握函数实参与形参的对应关系以及“值传递”的方式。
③掌握甬数的嵌套调用和递归调用的方法。
④掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法。
⑤学习对多文件程序的编译和运行。
2.实验内容
编程序并上机调试运行。
①已有变量定义和函数调用语句int a=1,b=-5,c; c=fun(a,b);fun函数的作用是计算两个数之差的绝对值,并将差值返回调用函数,请编写fun函数。
Fun(int x,int y)
{ }
②有函数调用语句c=add(a,b);请编写add函数,计算两个实数a和b的和,并返回和值。
double add(double x,double y)
{ }
③利用递归方法求5!。
④利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
⑤有5个人坐在一起,问第五个人的岁数,他说比第四个人大2岁。问第四个人岁数,他说比第三个人大2岁。问第三个人,叉说比第二个人大两岁。问第二个人,又说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人的岁数,就需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
⑥以下程序运行后输入:3,abcde<回车>,则输出结果是______。
#include
move(char*str,int n)
{char temp;int i;
temp=sTR[n-1];
fOr(i=n-1;i>0;i--)str[i]=str[i-1];
str[0]=temp;
}
main()
{chaR s[50];int n,i,z;
scanf("%d,%s",&n,&s);
z=strlen(s);
for(i=1;i<=n;j++)
move(s,z);
printf("%s\n",s);
}
⑦编写函数求:1-1/2+1/3-1/4+1/5-1/6+1/7-…1/n
⑧编程输出如下图形,
即一个由*组成的正六边形,注意是空心的。
3.理解变量的作用范围
①学习static定义静态变量的用法。
#include"stdio.h"
varfunc()
{
int var=0;
static int static_var=0;
printf("\40:var equal%d\n",var);
printf("\40:static var equal%d\n",static_var);
printf("\n");
var++;
static_var++;
}
voidmain()
{inti;
for(j=0;i<3;i++)
varfunc();
}
②学习使用auto定义变量的用法。
#include"stdio.h"
main()
{inti,num;
num=2;
for(i=0;i<3;i++)
{ printf("\40:The num equal%d\n",num);
num++;
{
auto int num=1;
printf("\40:The internal block num equal%d\n",num);
num++;
}
}
}
③学习使用static的另一用法。
#include"stdio.h"
main()
{
inti,num;
num=2
for(i=0;i<3;i++)
{
printf("\40:The hum equal%d\n",num);
num++;
{
static int num=1;
printf("\40:The internal block hum equal%d\n",hum);
num++;
}
}
}
④学习使用external的用法。
#include"stdio.h"
int a,b,c;
void add()
{int a;
a=3;
c=a+b
}
voidmain()
{ a=b=4;
add();
printf("The value of c is equal to%d\n",c);
}
⑤学习使用register定义变量的方法。
voidmain()
{
register int i;
int tmp=0:
for(i=1;i<=100;i++)
tmp+=i;
printf("The sum is%dha",tmp);
}
(6)宏#define命令练习(1)
#include"stdio.h"
#defineTRUE 1
#define FALSE 0
#define SQ(x)(x)*(x)
voidmain()
{
int num;
int again=1;
printf("\40:Program will stop if input value less than 50.\n");
while(again)
{
printf("\40:Please input number==>");
scanf("%d",&num);
printf("\40:The square for this number is%d\n",SQ(num));
if(num>=50)
again=TRUE;
else
again=FALSE;
}
}
第5题
指针
1.实验目的
①通过实验进一步掌握指针的概念,会定义和使用指针变量。
②能正确使用数组的指针和指向数组的指针变量。
③能正确使用字符串的指针和指向字符串的指针变量。
④能正确使用指向函数的指针变量。
⑤了解指向指针的概念及其使用方法。
2.实验内容
编程序并上机调试运行程序(都要求用指针处理)。
①输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
②有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
③有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
④编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数求1/1+1/3+…+1/n(利用指针函数)。
第6题
结构体和共用体
1.实验目的
①掌握结构体型变量的定义和使用。
②掌握结构体型数组的概念和使用。
③掌握链表的概念,初步学会对链表进行操作。
④掌握共用体的概念与使用。
2.实验内容
编程序,然后上机调试运行。
①输入和运行以下程序
union data
{int i[2];
float a;
long b;
char c[4];
}u;
main()
{ scanf("%d,%d",&u.i[0],&u.i[1]);
printf("i[0]=%d,i[1]=%d,a=%f,b=%ld,c[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c",u i[0],u i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]);
输入两个整数10000、20000给u.i[0]和u.i[1],分析运行结果。
然后将scanf语句改为:
scanf(”%ld",&u.b);
输入60000给b,分析运行结果。
②从键盘输入一个人的姓名、年龄、性别和身高,然后将它们打印出来。
③在某个选举区中共有500个选民,有6个候选人,要求编写一个程序来统计并显示每一个候选人的得票数量。
④在一个盒子中有红、绿、蓝、白四种颜色的球各若干。现在需要依次从盒子中取出两个球,问取出的两个球颜色不同的可能取法共有多少?编程打印出可能的取法。
第7题
位运算
1.实验目的
①掌握按位运算的概念和方法,学会使用位运算符。
②学会通过位运算实现对某些位的操作。
2.实验内容
编写程序,上机调试并运行。
①取一个整数a从右端开始的4~7位。
程序分析:
先使a右移4位。
设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
将上面二者进行&运算。
理解并使用运算符。
②按位与&。
程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1
程序源代码:
#include"stdio.h"
main()
{
int a,b;
a=077;
b=a&3;
printf("\40:The a&b(decimal)is%d\n",b);
b&=7;
printf("\40:The a&b(decimal)is%d\n",b);
}
③学习使用按位或|。
程序分析:0|0=0;0|1=1;1|0=1;1|1=1
程序源代码:
#include"stdio.h"
main()
{
int a,b;
a=077;
b=a|3;
printf("\40:The a|b(decimal)is%d\n",b);
b|=7;
printf("\40:The a|b(decimal)is%d\n",b);
}
④学习使用按位异或,^。
程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0
程序源代码:
#include"stdio.h"
main()
{
int a,b;
a=077;
b=a^3;
printf("\40:The a^b(decimal)is%d\n",b);
b^=7;
printf("\40:The a^b(decimal)is%d\n",b);
}
第8题
文件
1.实验目的
①掌握文件以及缓冲文件系统、文件指针的概念。
②学会使用文件打开、关闭、读、写等文件操作函数。
③学会用缓冲文件系统对文件进行简单的操作。
2.实验内容
编写程序并上机调试运行。
①编写建立一个文件,然后将从键盘输入的以“$”字符结尾的一般文本写入该文件并关闭该文件。然后重新打开该文件,将文件的内容读出并显示出来。
②从键盘输入3个人的自然情况信息,并将这些信息保存到一文件中。然后打开该文件,读出并显示该文件的内容。
③从键盘输入3个人的自然情况信息,并将这些信息保存到一个文件中。然后打开该文件,输入一个序号(0.1.2),并根据该序号读出并显示文件中这个人的信息。
第9题
输出结果是( )。
main(int argc, char*argv[])
{int i;
if(argc<-0)retum:
for(i=1;i<argc;i++)printf("%c",*argv[i]);
}
A.hello good B.hg C.hel D.hellogood
第10题
若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是( )。
A.EOF B.-1 C.非零值 D.NULL
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!