C program 上机练习
2024年2月22 日 0:01
// Online C compiler to run C program online #include <stdio.h>
int main() {
// Write C code here
//printf("Helloworld\n"); intcno = 99; //整
char cls[99] = "1A"; //字符串
char name[20] = "Chris Wang";
printf("%s is %d\n",cls,cno);
printf("My name is %s\n", name);
printf("Iam learning C programming.\n");
return 0; }
练习2: 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。
#include<stdio.h> int main()
{
here: printf("计算三角形的面积请输入‘1’,立方体的体积和表面积请输入‘2’,圆的面积和周长
请输入‘3’.\n");
int a;
scanf("%d",&a);
if(a==1) {
double l,h,s;
printf("请输入三角形的底边长和所在底边的高."); scanf("%lf%lf",&l,&h);
s=l*h/2;
printf("三角形的面积为%.16f\n",s);
}
else if(a==2) {
printf("请输入立方体的长宽高."); double b,c,d,v,s;
scanf("%lf%lf%lf",&b,&c,&d); v=b*c*d;
s=(b*c+b*d+c*d)*2 ;
分区 第一学期 的第 1 页
printf("立方体的体积为%.16f,表面积为%.16f\n",v,s);
}
else {
double r,s,c,m;
printf("请输入圆的半径"); scanf("%lf",&r);
m=3.141592653; s=m*r*r;
c=2*m*r;
printf("圆的面积为%.16f,圆的周长为%.16f\n",s,c); }
goto here; }
printf(%d %f %s %c )
• f格式符:用于以小数形式输出实数;
%10.3f:以定点十进制形式显示变量的值,且总共用10个字符,其中,整数位6位, 小数位3位,小数点1位;
如:#include<stdio.h> main()
{
float x;
x=839.21f;
printf(“%10.3f\n”,x); }
• s格式符:用于输出一个字符串。
如:printf(“%s”,”I am a student !”)
练习3:
将用户输入的成绩按以下规则转换成等级成绩:
分数: 90~100
分数: 80~89
分数: 70~79
分数: 60~69
分数: 60以下
等级:优
等级:良
等级:中
等级:及格
等级:不及格
# include<stdio.h> main()
{
int d;
printf(“输入分数:”); scanf(“%d”,&d);
if(d>=90 ) printf(“优”);
else if(d>=80) printf(“ 良”); else if(d>=70) printf(“ 中”);
else if(d>=60) printf(“ 及格”); else printf(“ 不及格”);
}
练习4 :
例:求一个整数的绝对值
#include<stdio.h> main()
{
int i,absi;
scanf(“%d”,&i);
absi = i > 0 ? i : -i;
printf(“%d绝对值是%d\n”,i,absi); }
练习5:
例:商店卖货物,每一件3.5元,按购买的数量给与优惠: 购买100件,优惠5%;
购买200件以上,优惠6%; 购买300件以上,优惠8%; 购买400件以上,优惠10%; 购买500件以上,优惠15%; #include<stdio.h>
main()
{
int n;
float p,price; scanf("%d",&n); switch(n/100)
{
case 1:
p=0.05; break;
case 2:
p=0.06; break;
case 3:
p=0.08; break;
case 4:
p=0.10; break;
case 5:
p=0.15; break;
}
price=3.5 * n * (1-p);
printf("%应付款=%7.2f\n",price); }
练习6 :用for 语句编写程序,找出100-200间的所有素数。
#include<stdio.h> int main()
{
inta,i;
for(a=100;a<=200;a++) {
for(i=2;i<a;i++) {
int b;
b=a%i; if(b==0) {
goto here; }
}
printf("%d ",a); here:;
}
return 0; }
练习7:
计算Fibonacci数列的前20项
Fibonacci数列定义: f(1)=1
f(2)=1
f(n)=f(n-1)+f(n-2) (n>2)
#include<stdio.h> main()
{
int f[21],i; f[1]=1;
f[2]=1;
for (i=3;i<=20;i++)
f[i]=f[i-1]+f[i-2];
for (i=1;i<=20;i++) {
printf("%8d",f[i]);
if(i%5==0) printf("\n");
} }
//每个数字占8位 //按5个一行输出
练习8:
例:将两个2行3列的矩阵相加,并显示结果。
#include<stdio.h> main()
{
int a[2][3]={1,3,5,7,9,11}; int b[2][3]={2,4,6,8,10,12}; int c[2][3],sum=0,i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
//i 表示第1行到第3行 //j 表示第1列到第3列
c[i][j]=a[i][j]+b[i][j]; for(i=0;i<2;i++)
for (j=0;j<3;j++) {
printf(“%5d”,c[i][j]);
if((j+1)%3==0) printf(“\n”); }
}
练习9 :字符串 字符串处理函数:
•scanf(“%s”,a); //以格式符%s输入字符串,输入的字符串自动以 ’\0’结尾;输入的字符 数组名前不加 ”&”前缀;
•printf(“%s”,a); //以格式符%s输出字符串,输出的字符串以 ’\0’结尾; •gets(a); //a为字符数组名,输入的字符可以包含 ’\0’字符;
•puts(a); //a为字符数组名,输入的字符可以包含 ’\0’字符; •strcat(字符串1,字符串2); //把字符串2连接到字符串1后;
•strcpy(字符数组1,字符串2); //把字符串2拷贝到字符数组1中;
如:str为字符数组,将字符常量赋予str: strcpy ( str ,"abcdef");
•strc
mp(字符串1,字符串2); //比较两个字符串,若相等,则返回0,若字符串1>字符串2,则返回1,
否则返回-1;
如:比较两个字符串str1、str2:if(strcmp(str1,str2)==1) printf("str1>str2"); •strlen(字符数组); //返回字符数组中包含的字符串的长度;
•strlwr(字符串); //将字符串的大写字符转换为小写; •strupr(字符串); //将字符串的小写字符转换为大写;
例:不使用strlen()函数,计算一个字符串的长度
#include<stdio.h> main()
{
int i=0;
char str[30];
printf(“ 输入一个字符串:”); gets(str);
while (str[i]!=’\0’) i++;
printf(“字符串长度为:%d\n”,i); }
例:将一字符串逆转
#include<stdio.h> #include<string.h> main()
{
char str[20],temp; int i,j;
printf(“输入一个字符串: ”); gets(str);
for(i=0;i<strlen(str)/2;i++)
{
j=strlen(str)-1; temp=str[i];
str[i]=str[j-i]; str[j-i]=temp;
}
printf(“倒置的字符串为:%s\n”,str); }
练习10:
~~~~~~~给定程序的功能是:求1+2+3+4+5+6+......+n(n的值由键盘输入)。 include<stdio.h>
main() {
int sumFunc(int n); //define int n,sum;
scanf("%d",&n);
sum = sumFunc(n); //call printf("sum=%d",sum);
}
int sunFunc(int n) {
}
解析:函数fac的功能是计算1-n之间整数的累计和。 int sumFunc(int n)
{
int i,sum;
sum=0; //累计和的初始值为0 for(i=1;i<=n;i++)
sum = sum + i; //将1-n之间的整数累加起来
return sum; }
练习11:
~~~~~~~~~给定程序的功能是:从键盘输入10个整数,求其中的最小值。 #include "stdio.h"
main() {
int fun(int x[],int n); int a[10],i,min;
printf("please input 10 numbers:\n"); for(i=0;i<10;i++)
scanf("%d",&a[i]);
min=fun(a,10);
printf("min=%d\n",min);
}
int fun(int x[],int n)
{ }
分区 第一学期 的第 5 页
解析:比较最小值的一般算法:设置一个变量min,第一步:将第一个数赋予min;第二步:利用 for循环,将剩下的9个数依次与min相比较,每次比较,min均等于小的数;
int fun(int x[],int n) {
int min,i;
min=x[0]; //将第一个数赋予min
for(i=1;i<=n-1;i++) //将剩下的9个数依次与min比较; if(min>x[i]) min=x[i];
return min; }