當前位置:首頁 » 編程語言 » 重郵c語言實驗題庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

重郵c語言實驗題庫

發布時間: 2022-11-03 21:18:48

c語言作業 實驗2-3-1 求1到100的和(10 分) 本題要求編寫程序,計算表達式 1 + 2 + 3 + ... + 100 的值

#include<stdio.h>
voidmain(){inti,s;
for(i=1,s=0;i<=100;i++)s+=i;
printf("sum=%d ",s);
}

Ⅱ 求c語言程序設計第三版和c語言程序設計實驗與習題指導答案

c語言程序設計第三版指導答案

附錄F課後題參考答案
習題1
1.1填空題
1.函數
2.主函數main();主函數main()3.主函數main()4.函數首部;函數體5.{;}
6.順序結構;選擇結構;循環結構7..c;.obj;.exe
1.2思考題
1.答:結構化程序設計是指,為使程序具有一個合理的結構以保證程序正確性而規定的一套如何進行程序設計的原則。順序結構,選擇結構,循環結構
2.答:演算法是對具體問題求解步驟的一種描述。計算機演算法的表達工具通常採用以下幾種方法:①用自然語言表示演算法;②用流程圖表示演算法;③用偽代碼表示演算法;④用程序設計語言表示演算法。
3.略4.略5.略1.3編程題1.答:
#include"stdio.h"main()
{floata=10,b=20,h=5,s;s=(a+b)*h/2;
printf("s=%f",s);}
2.答:
#include"stdio.h"
main()
{printf("******************************");printf("*helloworld*");printf("******************************");}
習題2
2.1單選題
DBDCADCABBCA
2.2填空題
1.2.000000

2.1;0.500000
3.9;24.65.100;d6.(1)20
(2)0

(3)607.(1)10;6;4
(2)6;9;15
(3)3;60;83
8.55或'7'
9.x=4;y=6;z=3;m=463
2.3改錯題(略)
習題3
3.1單選題
BDABCADCACBBA
3.2填空題
1.32.2613.10
4.2,1;互換a,b的值5.6.66.0037.7
8.5.0,4,c=3<Enter>
9.i=10,j=20<Enter>
10.(1)65(2)65,A(3)3.14,123.46
(4)3.141600e+000,1.234560e+002(5)8765.432100(6)8.765432e+003
11.a=2b=5x=8.8y=76.34c1=65c2=9712.%d/%d;%d/%d=%.2f
3.3改錯題(略)3.4編程題
1.答:
#include"stdio.h"main(){
intx,y;
scanf("%d%d",&x,&y);printf(" x y ");
printf("十進制數 %d %d ",x,y);printf("八進制數 %o %o ",x,y);printf("十六進制數 %X %x ",x,y);}
2.答:
#include"stdio.h"main(){
charch;
printf("請輸入一個大寫英文字母");scanf("%c",&ch);
printf("大寫英文字母是%c ",ch);printf("它的前導字元是%c ",ch-1);printf("它的後續字元是%c ",ch+1);}
3.答:
#include"stdio.h"main(){
intx,a,b,c,y;
printf("請輸入一個三位整數 ");scanf("%d",&x);a=x/100;
b=(x-a*100)/10;c=x%10;
y=c*100+b*10+a;
printf("反向輸出該整數:%d ",y);}}
4.答:
#include"stdio.h"main()
{inthour;
doublesalary,salaryday;
scanf("%d,%lf",&hour,&salaryday);
salary=hour*salaryday-hour*salaryday*0.1;
printf("%8.2lf ",salary);}
5.答:
#include"stdio.h"main(){
inta,b,c,t;
printf("請輸入三個整數 ");scanf("%d%d%d",&a,&b,&c);
printf("交換前a=%d,b=%d,c=%d ",a,b,c);t=a;a=c;c=b;b=t;
printf("交換後a=%d,b=%d,c=%d ",a,b,c);}
習題4
4.1單選題
BADDDACBBBBA
4.2填空題
1.1
2.(1)a>0||b>0
(2)x>0&&x<=10(3)a==1.5&&b==1.5&&c==1.5
(4)p<a||p<b||p<c
3.(1)0(2)1(3)1(4)0(5)1
4.c=15.-46.17.5,0,38.59.123
10.(cvb=='y'||cvb=='Y')&&(work>=3||college=='y'||college=='Y')&&age<=35
4.3改錯題(略)4.4編程題
1.答
#include"stdio.h"
#include"math.h"main(){
doublea,b,c,p,area;
scanf("%lf%lf%lf",&a,&b,&c);
printf("三角形的三邊為:%.llf,%.1lf,%.1lf ",a,b,c);if(a+b>c&&a+c>b&&b+c>a){p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("三角形的面積為%.2lf ",area);}else
printf("不能構成三角形 ");}
2.答:
#include"stdio.h"main()
{intx,y;
scanf("%d,%d",&x,&y);if(x*x+y*y>1000)
printf("%d ",(x*x+y*y)/100);else
printf("%d ",x+y);}
3.答:
#include"stdio.h"#include"math.h"main()
{doublex,y;
scanf("%lf",&x);if(x<-2)y=x*x-sin(x);elseif(x<=2)y=pow(2,x)+x;elsey=sqrt(x*x+x+1);
printf("x=%.2lfy=%.2lf ",x,y);}
4.答:
#include"stdio.h"main()
{longge,shi,qian,wan,x;scanf("%ld",&x);wan=x/10000;
qian=x%10000/1000;shi=x%100/10;
ge=x%10;
if(ge==wan&&shi==qian)/*個位等於萬位並且十位等於千位*/printf("thisnumberisahuiwen ");else
printf("thisnumberisnotahuiwen ");
}
5.答:
#include"stdio.h"main()
{floatp,w,s,d,f;
scanf("%f,%,%f",p,s,w);if(s>3000)d=0.15elseif(s>=2000)d=0.1;elseif(s>=1000)d=0.08;elseif(s>=500)d=0.05;elseif(s>=250)d=0.02;elsed=0f=p*w*s*(1-d);printf("%f",f);}
6.答:
#include"stdio.h"main()
{intyear,money;charx;
printf("是否是本公司產品(y/n):");scanf("%c",&x);
if(x=='y'||x=='Y')
{printf("產品使用的年限:");scanf("%d",&year);
if(year<=1)money=0;
elseif(year<8)money=50;elsemoney=100;

printf("產品保修額是:%d ",money);
}
else
{money=200;
printf("不是本公司產品,產品保修額是:%d ",money);}}
7.答:
#include"stdio.h"main()
{intmoney,num1,num2;
printf("請輸入取款額(≤2000):");scanf("%d",&money);
if(money>2000)printf("請輸入取款額數≤2000! ");elseif(money%50==0){num1=money/100;num2=(money-num1*100)/50;printf("需支付100元:%d張 ",num1);printf("需支付50元:%d張 ",num2);}elseprintf("輸入錢數必須是50的倍數! ");}
習題5
5.1單選題
CDABAABDDBDBCB
5.2填空題
1.202.333
3.(1)i<10或i<=9(2)j%3!=0
4.(1)flag*(float)k/(k+1)或1.0*flag*k/(k+1)(2)flag=-flag5.(1)max=x


(2)x!=-1(3)scanf("%d",&x)
6.(1)x<=9或x<10
(2)y=9-x
5.3改錯題(略)5.4編程題
1.答:
(1)for循環,其他略
#include"stdio.h"
main()
{inti,s=0;
for(i=1;i<=100;i++)s+=i*i;
printf("%d ",s);}
(2)for循環,其他略
#include"stdio.h"main()
{inti=1,p=1;doubles=1;do{
s+=1.0/p;p*=++i;
}while(1.0/p>1e-6);printf("%lf",s);}
2.答:
#include"stdio.h"main()
{intm,n,t,a,b;
scanf("%d,%d",&m,&n)if(m<n)
{t=mm=nn=t}a=m;b=n;t=m%nwhile(t)
{m=nn=tt=m%n;}printf("%d",n);}
3.答:
#include"stdio.h"main()
{intx,y,s=1;
scanf("%d,%d",&x,&y)for(y>0y--)s*=x
printf("%d,%d,%d ",s%10,s/10%10,s/100%10);}
4.答:
#include"stdio.h"main()
{intx,y,z;
for(x=1x<20x++)for(y=1y<33y++){z=100-x-y
if((z%3)==0&&(5*x+3*y+z/3)==100)printf("x=%d,y=%d,z=%d ",x,y,z)}}
5.答:(a)
#include"stdio.h"main()
{intj,k
for(j=1j<=4j++)
{for(k=1;k<=4-j;k++)printf("");printf("****")printf(" ")}}
(b)
#include"stdio.h"main()
{intj,k
for(j=1j<=4j++)
{for(k=1;k<=4-j;k++)printf("");for(k=1k<=2*j-1k++)printf("*")printf(" ")}}
6.答:
程序分析:利用for循環控制在100~999之間,對每個數分解出個位、十位、百位。
#include<stdio.h>main(){inti,j,k,n;printf("waterflower'numberis:");for(n=100;n<1000;n++){i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出個位*/if(n==i*i*i+j*j*j+k*k*k){printf("%-5d",n);}}printf(" ");}
7.答:
#include<stdio.h>main(){intx;for(x=1000;x>=3;x--)if(x%3==1&&x%5==2&&x%7==3){
printf("該校的學生人數是:%d人 ",x);break;}}
8.答:
#include<stdio.h>main(){intx=12,i=1;while(1)
{if((x+20+i)==2*(x+i))break;i++;}printf("小明母親在%d年後比小明的年齡大一倍 ",i);printf("那時小明年齡是:%d歲,小明母親年齡是:%d歲 ",x+i,x+20+i);}
習題6
6.1單選題
DBCCBBDC
C語言程序設計教程(第3版)
278
6.2填空題
1.c2.603.1000104.16
6.3編程題
1.答:
#include"stdio.h"#include"math.h"
#defineF(a)a*a+sqrt(3*a*a+2*a+1)main()
{floatx,f;
scanf("%f",&x);
f=4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x)printf("%f ",f);}
習題7
7.1單選題
BCADACCCDABCBDB
7.2填空題
1.(1)2345(2)10010(3)QuickC

(4)1000001000001000001000001(5)Language
(6)LanguageProgramming2.(1)j+=2(2)a[i]>a[j]3.(1)i=1(2)x[i-1]
7.3改錯題(略)7.4編程題
1.答:
#defineN10
#include"stdio.h"main()
{inta[N]={1,2,3,4,5,6,7,8,9,10,osum=0,qsum=0,j;for(j=0;j<10;j++)
if(j%2)qsum+=a[j];
elseosum+=a[j];
printf("osum=%d,qsum=%d ",osum,qsum);}
2.答:
#defineN10
#include"stdio.h"main()
{inta[N]={10,20,30,40,50,60,70,80,90},j,k,x;scanf("%d",&x);for(j=0;j<N;j++)
if(x<a[j])break;if(j==N)a[N-1]=x;else
{for(k=N-1;k>j;k--)a[k]=a[k-1];a[j]=x;}
for(j=0;j<N;j++)
printf("%d",a[j]);}
3.答:
#defineM3
#include"stdio.h"main()
{inta[M][M]={{1,2,3},{2,4,5},{3,5,6}},j,k,flag=1;;for(j=0;j<M;j++)
for(k=0;k<M;k++)if(a[j][k]!=a[k][j]){flag=0;break;}if(flag)printf("ok");elseprintf("NO");}
4.答:
#include"stdio.h"#include"string.h"main()
{charc1[10],c2[10],j;gets(c1);gets(c2);
for(j=0;(c1[j]==c2[j])&&c1[j]&&c2[j];j++);if(c1[j]>c2[j])printf("%d ",1);if(c1[j]<c2[j])printf("%d ",-1);if(c1[j]==c2[j])printf("%d ",0);}
5.答:
#include"stdio.h"#include"string.h"#defineM3#defineN80main()
{chara[M][N],j,k,n[5]={0};for(j=0;j<M;j++)gets(a[j]);
for(j=0;j<M;j++)
for(k=0;a[j][k];k++)
if(a[j][k]>='A'&&a[j][k]<='Z')n[0]++;
elseif(a[j][k]>='a'&&a[j][k]<='z')n[1]++;elseif(a[j][k]>='0'&&a[j][k]<='9')n[2]++;elseif(a[j][k]=='')n[3]++;elsen[4]++;
for(j=0;j<5;j++)printf("%4d",n[j]);}
習題8
8.1單選題
DBDACBACCC
8.2填空題
1.(1)2,1(2)10#30#(3)FOUR,P(4)60
2.(1)49
(2)2
(3)2

(4)

(5)
8.3改錯題(略)8.4編程題
1.答:
#include"stdio.h"
main()
{intn1,n2,n3,t;int*p1,*p2,*p3;
printf("pleaseinput3number:n1,n2,n3:");scanf("%d,%d,%d",&n1,&n2,&n3);p1=&n1;
p2=&n2;p3=&n3;
if(*p1>*p2){t=*p1;*p1=*p2;*p2=t;}
if(*p1>*p3){t=*p1;*p1=*p3;*p3=t;}if(*p2>*p3){t=*p2;*p2=*p3;*p3=t;}
printf("thesortednumbersare:%d,%d,%d ",n1,n2,n3);}
2.答:
#include"stdio.h"#defineN3main()
{inta[N],*p=a;for(;p-a<N;p++)scanf("%d",p);p=a+N-1;
for(;p-a>=0;p--)printf("%d",*p);}
3.答:
#include"stdio.h"main()
{inta[10];
intj,minl=0,maxl=0;for(j=0;j<10;j++)
scanf("%d",a+j);for(j=0;j<10;j++)
{if(a[maxl]<*(a+j))maxl=j;if(a[minl]>*(a+j))minl=j;}
j=a[0];a[0]=a[minl];a[minl]=j;j=a[9];a[9]=a[maxl];a[maxl]=j;for(j=0;j<10;j++)printf("%d",*(a+j));}
4.答:
輸入陣列如下:123456789101112輸出陣列如下:
121110987654321
#defineM3
#defineN4
#include"stdio.h"main()
{inta[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},k,j,*p=&a[0][0],t;for(k=0,j=M*N-1;k<j;k++,j--)
{t=*(p+k);*(p+k)=*(p+j);*(p+j)=t;}for(k=0k<Mk++){for(j=0j<Nj++)
printf("%4d",a[k][j]);printf(" ");
}}
5.答:
#include"stdio.h"main(){
intlen;
charstr[20],*p=str;
printf("pleaseinputastring: ");scanf("%s",str);len=0;
while(*p!=''){
len++;p++;}
printf("thestringhas%dcharacters. ",len);}
6.答:
#include"string.h"#include"stdio.h"main(){
char*str1[5],ch[5][20],k,t,j,*c;voidsort(char**);for(k=0;k<5;k++){str1[k]=ch[k];gets(str1[k]);}for(k=0;k<7;k++)
{t=k;
for(j=k+1;j<5;j++)if(strcmp(*(str1+t),*(str1+j))>0)t=j;c=*(str1+t);
*(str1+t)=*(str1+k)*(str1+k)=c}
for(k=0;k<5;k++)puts(str1[k]);}
習題9
9.1單選題
CBBADDBCCDDCABCBCCBADCDAB
9.2填空題
1.1202.x3.3,2,2,34.fac/i5.8,176.97.1.0/(i*i)8.
fun-in:30,20,10fun-end:1015,35,105010,20,309.01234510.9363611.(1)r+b[k](2)*x
12.7531913.15
14.(1)*x(2)t15.(1)''(2)n++16.024
9.3改錯題(略)9.4編程題
1.答:
voidzhuan()
{charch;
while((ch=getchar())!=' ')
{if(ch>='a'&&ch<='z')ch=ch-32;putchar(ch);}}
2.答:
doubleexpp(intn){intk,fac=1;doublesum=1;
for(k=1;k<=n;k++){fac*=k;
sum+=1.0/fac}
return(sum);}
3.答:
intxy3(intx,inty)
{intk,num=1;
for(k=1;k<=yk++)num*=x
num=num%1000returnnum}
4.答:
intage(intn){intc;
if(n==1)c=10
elsec=age(n-1)+2returnc}
5.答:
#include"stdio.h"
main()
{inta,b,c,d;
voidfun(inta,intb,int*c,int*d);scanf("%d%d",&a,&b);fun(a,b,&c,&d);
printf("%d%d",c,d);
}
voidfun(inta,intb,int*c,int*d){if(b)
{*c=a/b;*d=a%b;}}
6.答:
#include"stdio.h"
main(intargc,char*argv[]){intk;
printf("argc=%d ",argc);for(k=1;k<argc;k++)printf("%s ",argv[k]);}
習題10
10.1單選題
CDBBBBBBADCCBDC
10.2填空題
1.所有結構體成員所佔存儲空間的總和2.與佔用存儲空間最大的那個成員相等
附錄F課後題參考答案

285
3.(1)structsatype(2)3(3)sa.a(4)9(5)psa=&sa4.805.structnode6.0
10.3編程題
1.答:
#include"stdio.h"
structstudent{
longnum;
charname[20];charsex;floatscore;};main()
{structstudents[20],temp;intj,k,man=0,woman=0;
floatsumman=0,sumwoman=0,aveman,avewoman;for(k=0;k<20;k++)
{scanf("%ld%s%c%f",&s[k].num,s[k].name,&s[k].sex,&s[k].score);if(s[k].sex=='m')
{summan+=s[k].score;man++;}else
{sumwoman+=s[k].score;woman++}}
aveman=summan/man;
avewoman=sumwoman/woman;
printf("%d %f %d %f ",man,aveman,woman,avewoman);for(k=0;k<19;k++)
for(j=0;j<20-k;j++)
if(s[j].score<s[j+1].score)
{temp=s[j];s[j]=s[j+1];s[j+1]=temp;}printf("thesortednumbers: ");for(k=0;k<20;k++)
printf("%ld %s %c %5.1f ",s[k].num,s[k].name,s[k].sex,s[k].score);}
習題11
11.1單選題
BADD
11.2填空題
1.3d3d3302.(1)28
(2)20(3)0(4)--9
3.(1)251
(2)42
(3)209
(4)–295(5)848
習題12
12.1單選題
BCDCAADA
12.2填空題
1.rewind(文件指針)2."d1.dat","rb"3.stdin
4.文本文件;二進制文件5.(1)"w"
(2)str[i]--32

(3)"r"
6.fopen7.Hello8.(1)"r"

(2)fgetc(fp)

(3)time++


C語言程序設計實驗與習題指導課後程序設計答案
P18
(1)
#include<stdio.h>intmain(void){intcelsius,fahr;fahr=150;celsius=5*fahr/9-5*32/9;printf("fahr=%d,celsius=%d ",fahr,celsius);return0;}
(2)
#include<stdio.h>intmain(void){intcelsius,fahr;celsius=26;fahr=9*celsius/5+32;printf("celsius=%d,fahr=%d ",celsius,fahr);return0;}
(3)
#include<stdio.h>intmain(void){intaverage,math,eng,comp;math=87;eng=72;comp=93;average=(math+eng+comp)/3;printf("math=%d,eng=%d,comp=%d,average=%d ",math,eng,comp,average);return0;}
(4)
#include<stdio.h>intmain(void){intn,a,b,c;n=152
c=n%10;
b=(n/10)%10;a=n/100;
printf("整數%d的個位數字是%d,十位數字是%d,百位數字是%d ",n,c,b,a);return0;
}
P27
(1)
#include<stdio.h>#include<math.h>intmain(void){intcelsius,fahr;printf("Entercelsius:");scanf("%d",&celsius);fahr=9*celsius/5+32;printf("fahr%d ",fahr);return0;}
(2)
#include<stdio.h>#include<math.h>intmain(void){intmoney,year;doublerate,interest;printf("Entermoney,year,rate:");scanf("%d%d%lf",&money,&year,&rate);interest=money*pow(1+rate,year)-money;printf("interest=%.2f ",interest);return0;}
(3)
#include<stdio.h>#include<math.h>intmain(void){doublex,y;printf("Enterx:");scanf("%lf",&x);
if(x<0){y=pow(x+1,2)+2*x+1/x;}else{y=sqrt(x);}
printf("y=f(%f)=%.2f ",x,y);return0;
}
(4)
#include<stdio.h>intmain(void){intx,y;printf("Enternum1:");scanf("%d",&x);printf("Enternum2:");scanf("%d",&y);printf("%d+%d=%d ",x,y,x+y);printf("%d-%d=%d ",x,y,x-y);printf("%d*%d=%d ",x,y,x*y);printf("%d/%d=%d ",x,y,x/y);printf("%d%%%d=%d ",x,y,x%y);return0;}
10的階乘
#include<stdio.h>intmain(void){inti,n,proct;printf("Entern:");scanf("%d",&n);proct=1;for(i=1;i<=n;i++){proct=proct*i;}printf("proct=%d ",proct);return0;}

Ⅲ C語言 編程!!!二、實驗題目: 有10個學生,每個學生的數據包括學號,姓名,及三門課成績,總,平均。

#include(stdio.h)

float score[4];

}person[10];

int i;

printf("請輸入10名學生的學號、姓名、及三門成績:");

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

printf("學號:%d 姓名:%s 成績:%d %d %d 平均成績:%d ",person[i]->number,person[i]->name[20],person->score[0],person->score[1],person->score[2],person->score[3]);

}

(3)重郵c語言實驗題庫擴展閱讀:

在C語言家族程序中,頭文件被大量使用。一般而言,每個C++/C程序通常由頭文件和定義文件組成。頭文件作為一種包含功能函數、數據介面聲明的載體文件,主要用於保存程序的聲明,而定義文件用於保存程序的實現。

不像 COBOL、Fortran 和 PL/I等編程語言,在 C 語言的工作任務里不會包含嵌入的關鍵字,所以幾乎所有的 C 語言程序都是由標准函數庫的函數來創建的。

Ⅳ 一些c語言題,一共10道。求高手解答,急,明晚交。。。。。。。。

總考別人是不行的 父母供應你上學不容易的,

有時間少打打游戲 多練習練習比這個強!!

Ⅳ 誰能幫找C語言基礎習題

C語言實驗參考答案
實驗一
5、輸入並運行自已編寫的程序(教材第一章P14 三 編程題)。
實驗二
1、編寫一個程序,從鍵盤接收3個實數(分別為10.0、20.0、5.0),輸出這3個數的和s、乘積t和平均值a。
#include <stdio.h>
main()
{float x,y,z,s,t,a;
printf(「x,y,z=」);
scanf(「%f,%f,%f」,&x,&y,&z);
s=x+y+z;
t=x*y*z;
a=s/3;
printf(「s=%f,t=%f,a=%f\n」,s,t,a);
}
2、編程。要求用戶輸入兩個整數a、b(分別為20、10), 讀取用戶從鍵盤輸入的值,然後:
1)用整數輸出這兩個數的和、差;
2)用長整型輸出這兩個數的積,用float輸出商;
3)用整數輸出這兩個數的余數,用float輸出平均值。
#include <stdio.h>
main()
{int a,b,he,cha,yu;
long ji;
float shang,aver;
printf(「a,b=」);
scanf(「%d,%d」,&a,&b);
he=a+b;
cha=a-b;
ji=(long)a*b;
shang=1.0*a/b;
yu=a%b;
aver=(a+b)/2.0;
printf(「a+b=%d,a-b=%d,a*b=%ld\n」,he,cha,ji);
printf(「a/b=%f,a%%b=%d,aver=%f\n」,shang,yu,aver);
}
實驗三
1、編寫一個程序,從鍵盤接收一個一位的整型數,經轉換,用字元函數putchar輸出。例如,輸入整數5,程序運行後輸出字元5。
#include <stdio.h>
main()
{int a;
char c;
printf(「a=」);
scanf(「%d」,&a);
c=a+48;
putchar(c);
}
2、編程。輸入半徑,計算球體表面積( )和球體積 ( )。
#include <stdio.h>
#define PI 3.1415926
main()
{float r,s,v;
printf(「r=」);
scanf(「%f」,&r);
s=4*PI*r*r;
v=4/3.0*PI*r*r*r;
printf(「s=%f,v=%f\n」,s,v);
}
3、編寫一個程序,要求通過鍵盤給6個變數賦值,然後將變數的值在屏幕上列印輸出。這六個變數的值分別為:10,-10,40000,a,3.14,hello。
#include <stdio.h>
main()
{int a,b;
long c;
char d,ch[6];
float e;
scanf(「%d,%d,%ld,%c,%f,%s」,&a,&b,&c,&d,&e,ch);
printf(「%d,%d,%ld,%c,%f,%s\n」,a,b,c,d,e,ch);
}
實驗四
1、輸入三個整數,分別存放到變數a,b,c中,試編程輸出其中的最小值。
#include <stdio.h>
main()
{int a,b,c,min;
printf(「a,b,c=」);
scanf(「%d,%d,%d」,&a,&b,&c);
min=a>b?(b>c?c:b):(a>c?c:a);
printf(「min=%d\n」,min);
}
2、輸入一個字元,如是大寫字母,則輸出相應小寫字母;如是小寫字母,則輸出相應大寫字母;其它字元原樣輸出 。(例如:輸入F,輸出f,輸入b,輸出B,輸入7,輸出7)。
#include <stdio.h>
main()
{char c,ch;
c=getchar();
ch=c;
if(c>=『A』&&c<=『Z』)
ch=c+32;
if(c>=『a』&&c<=『z』)
ch=c-32;
putchar(ch);
}
實驗五
1、函數

⑴用條件表達式求函數值y。
⑵用if語句編程,輸入x,輸出y,並給出你所使用的測試用例。
解(1)
#include <stdio.h>
main()
{int y;
float x;
printf(「x=」);
scanf(「%f」,&x);
y=x>0?1:(x==0?0:-1);
printf(「y=%d\n」,y);
}
解(2)
#include <stdio.h>
main()
{int y;
float x;
printf(「x=」);
scanf(「%f」,&x);
if(x>0)
y=1;
else if(x==0)
y=0;
else
y=-1;
printf(「y=%d\n」,y);
}
2、試編程輸入成績cj(cj為整型變數),如果cj的值在[100,90]內輸出A,在(90,80]內輸出B,在(80,70]內輸出C,在(70,60]內輸出D,在(60,0]內輸出E,其它輸出錯誤信息。請使用if語句和switch語句分別實現。
解(1)
#include <stdio.h>
main()
{int cj;
printf(「cj=」);
scanf(「%d」,&cj);
if(cj>=90&&cj<=100)
printf(「A\n」);
else if(cj>=80&&cj<90)
printf(「B\n」);
else if(cj>=70&&cj<80)
printf(「C\n」);
else if(cj>=60&&cj<70)
printf(「D\n」);
else if(cj>=0&&cj<60)
printf(「E\n」);
else
printf(「輸入錯誤\n」);
}
解(2)
#include <stdio.h>
main()
{int cj,n;
printf(「cj=」);
scanf(「%d」,&cj);
n=(cj>=0)+(cj>=60)+(cj>=70)+(cj>=80)+(cj>=90)+(cj>100);
switch(n)
{case 5:printf(「A\n」);break;
case 4:printf(「B\n」); break;
case 3:printf(「C\n」); break;
case 2:printf(「D\n」); break;
case 1:printf(「E\n」); break;
default:printf(「輸入錯誤\n」);
}
}
實驗六
1、編程:輸出200以內所有能被7整除的數。
#include <stdio.h>
main()
{int i;
for(i=0;i<=200;i+=7)
printf(「%4d」,i);
}
2、從鍵盤輸入n個數(n<10),找出其中最小值,請編寫相應程序。
#include <stdio.h>
main()
{int n,i,a,min;
printf(「n=」);
scanf(「%d」,&n);
for(i=1;i<=n;i++)
{scanf(「%d」,&a);
if(i==1)min=a;
if(min>a)min=a;
}
printf(「min=%d」,min);
}
3、鍵盤輸入正整數m和n(m<n),計算m~n之間所有奇數之和x與偶數之和y,請編程實現。
#include <stdio.h>
main()
{int m,n,i,x1=0,x2=0;
printf(「input m,n(m<n):」);
scanf(「%d,%d」,&m,&n);
for(i=m;i<=n;i++)
if(i%2==1)x1+=i;
else x2+=i;
printf(「x1(奇數之和)=%d,x2(偶數之和)=%d\n」,x1,x2);
}
實驗七
1、列印出所有的"水仙花數",所謂的"水仙花數"是指一個3位數,其各位數字的立方和等於該數本身。例如,153是一個"水仙花數",因為有153=1*1*1+5*5*5+3*3*3 。
解(1)
#include <stdio.h>
main()
{int a,b,c,n;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{n=100*a+10*b+c;
if(n==a*a*a+b*b*b+c*c*c)
printf(「%d\n」,n);
}
}
解(2)
#include <stdio.h>
main()
{int a,b,c,n;
for(n=100;n<=999;n++)
{a=n/100;
b=n%100/10;
c=n%10;
if(n==a*a*a+b*b*b+c*c*c)
printf(「%d\n」,n);
}
}
2、請分別用三種循環結構編程計算: 1!+2!+3!+...+n! , n的值由鍵盤輸入。
解(1)
#include <stdio.h>
main()
{int n,i;
long p=1,sum=0;
printf(「n=」);
scanf(「%d」,&n);
for(i=1;i<=n;i++)
{p*=i;
sum+=p;
}
printf(「1!+2!+…+%d!=%ld\n」,n,sum);
}
解(2)
#include <stdio.h>
main()
{int n,i=1;
long p=1,sum=0;
printf(「n=」);
scanf(「%d」,&n);
while(i<=n)
{p*=i;
sum+=p;
i++;
}
printf(「1!+2!+…+%d!=%ld\n」,n,sum);
}
解(3)
#include <stdio.h>
main()
{int n,i=1;
long p=1,sum=0;
printf(「n=」);
scanf(「%d」,&n);
do
{p*=i;
sum+=p;
i++;
}
while(i<=n);
printf(「1!+2!+…+%d!=%ld\n」,n,sum);
}
實驗八
1、列印輸出由1,2,3,4四個數字組成的4位數,並統計它的個數(允許該4位數中有相同的數字,例如:1111,1122,,1212等).。
#include <stdio.h>
main()
{int n,a,b,c,d,num=0;
for(a=1;a<=4;a++)
for(b=1;b<=4;b++)
for(c=1;c<=4;c++)
for(d=1;d<=4;d++)
{n=1000*a+100*b+10*c+d;
printf(「%5d」,n);
num++;
}
printf(「\nnum=%d\n」,num);
}
2、從鍵盤輸入10個正整數進行求和,如果錯誤地輸入了負數,則求和結束。請分別用break和不用break編寫相應程序。
解(1) 用break編寫程序
#include <stdio.h>
main()
{int i,n,sum=0;
for(i=1;i<=10;i++)
{scanf(「%d」,&n);
if(n>=0)sum+=n;
else break;
}
printf(「sum=%d」,sum);
}
解(2) 不用break編寫程序
#include <stdio.h>
main()
{int i=1,n=0,sum=0;
while(i<=10&&n>=0)
{scanf(「%d」,&n);
if(n>=0)
sum+=n;
i++;
}
printf(「sum=%d」,sum);
}
實驗九
1、求一個3×3的整數矩陣的副對角線上所有奇數的和sum2。
#include <stdio.h>
main()
{int a[3][3],sum2=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{scanf(「%d」,&a[i][j]);
if(i+j==2&&a[i][j]%2)
sum2+=a[i][j];
}
printf(「sum2=%d」,sum2);
}
2、輸入一個正整數n(1<n≤10),再輸入n個整數,請編程實現:
⑴ 輸出這些數的平均值(保留2位小數)。
⑵ 把這些數逆序後再輸出。
⑶ 輸出它們中的最大值及其下標(設最大值唯一,下標從0開始)。
⑷ 將它們中的最小值與第一個數交換,最大值與最後一個數交換,然後輸出交換後的n個數。
#include <stdio.h>
main()
{int a[10],n,min,max,xb0,xb1,i,sum,t;
float aver;
printf(「n=」);
scanf(「%d」,&n);
for(i=0;i<n;i++)
scanf(「%d」,&a[i]);
min=a[0];xb0=0;
max=a[0];xb1=0;
sum=a[0];
for(i=1;i<n;i++)
{if(min>a[i]){min=a[i];xb0=i;};
if(max<a[i]){max=a[i];xb1=i;};
sum+=a[i];
}
aver=1.0*sum/n;
printf(「(1)平均值為:%3.2f\n」,aver);
printf(「(2)逆序輸出:」);
for(i=n-1;i>=0;i--)
printf(「%4d」,a[i]);
printf(「\n」);
printf(「(3)最大值為:%d,其下標為:%d\n」,max,xb1);
t=a[0];a[0]=a[xb0];a[xb0]=t;
t=a[n-1];a[n-1]=a[xb1];a[xb1]=t;
printf(「(4)經交換後輸出:」);
for(i=0;i<n;i++)
printf(「%4d」,a[i]);
printf(「\n」);
}
實驗十
1、輸入一個以回車結束的字元串(少於80個字元),將該字元串逆序後輸出。
#include <stdio.h>
#include <string.h>
main()
{char c[80],ch;
int i,l;
gets(c);
l=strlen(c);
for(i=0;i<l/2;i++)
{ch=c[i];
c[i]=c[l-i-1];
c[l-i-1]=ch;
}
puts(c);
}
2、輸入一個以回車結束的字元串(少於80個字元),再輸入一個字元,統計並輸出該字元在字元串中出現的次數,然後再輸出該字元串。
#include <stdio.h>
main()
{char c[80],ch;
int i,num=0;
gets(c);
ch=getchar();
for(i=0;c[i]!=『\0』;i++)
if(c[i]==ch)num++;
printf(「num(%c)=%d\n」,ch,num);
puts(c);
}
實驗十一
1、鍵盤輸入2個字元串,將二者連接後的結果輸出(用指針完成)。
#include <stdio.h>
#include <string.h>
main()
{char a[40],b[20],*p,*q;
int i,la,lb;
gets(a);
gets(b);
la=strlen(a);
lb=strlen(b);
p=&a[la];
q=b;
for(i=0;i<=lb;i++)
{*p=*q;
p++;
q++;
}
puts(a);
}
2、編一個程序,輸入15個整數存入一維數組,按逆序存放後再輸出(用指針完成)。
#include <stdio.h>
main()
{ int i,a[15],*p=a,*q,temp;
for(i=0;i<15;i++)
scanf("%d",p+i);
q=&a[14];
for(i=0;i<7;i++)
{temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
p=a;
for(i=0;i<15;i++)
printf("%3d",*(p+i));
}
3、用指針方法,編寫一個函數,求矩陣主對角線元素之和Sum。
#include <stdio.h>
main()
{int i,j,a[3][3],*p=*a,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{scanf("%d",p);
if(i==j)sum+=*p;
p++;
}
printf("sum=%d\n",sum);
}
4、輸入一個3×6的二維整型數組,輸出其中最大值、最小值以及它們所在行和列的下標(用指針完成)。
#include <stdio.h>
main()
{int i,j,a[3][6],*p=*a,min,max,xb0_h,xb0_l,xb1_h,xb1_l;
for(i=0;i<3;i++)
for(j=0;j<6;j++)
{scanf("%d",p);
if(i==0&&j==0)
{max=*p;min=*p;
xb0_h=0;xb0_l=0;
xb1_h=0;xb1_l=0;
}
if(max<*p)
{max=*p;xb1_h=i;xb1_l=j;}
if(min>*p)
{min=*p;xb0_h=i;xb0_l=j;}
p++;
}
printf("最大值為:%d,行標:%d,列標:%d\n",max,xb1_h,xb1_l);
printf("最小值為:%d,行標:%d,列標:%d\n",min,xb0_h,xb0_l);
}
實驗十二
定義一個含10個學生成績的結構數組(每個學生的信息包括學號、姓名、成績),數據自定,要求:
1)求出平均成績。
2)將成績從高到低排序輸出。
#include <stdio.h>
main()
{int i,j,g[15],temp;
float aver=0;
struct student
{long num;
char name[20];
int grade;
}stu[10]={{101001,「zhao」,78},{101002,「qian」,86},
{101003,「sun」,69},{101004,「li」,77},
{101005,「zhou」,98},{101006,「wu」,56},
{101007,「zheng」,75},{101008,「wang」,88},
{101009,「chen」,73},{101010,「shen」,99}
};
for(i=0;i<10;i++)
{aver+=stu[i].grade;g[i]=stu[i].grade;}
aver=aver/10;
printf(「(1)平均成績:%5.2f\n」,aver);
for(i=0;i<10;i++)
for(j=i;j<10;j++)
if(g[i]<g[j])
{temp=g[i];
g[i]=g[j];
g[j]=temp;
}
printf(「(2)成績排序:」);
for(i=0;i<10;i++)
printf(「%4d」,g[i]);
printf(「\n」);
}
實驗十三
1、在主函數main()中已有變數定義和函數調用語句:「int a=1,b= -5,c; c=fun (a ,b)」; fun函數的作用是計算兩個數之差的絕對值,並將差值返回調用函數,請
1)編寫fun函數。
fun(int x , int y)
{ }
2)寫出這個主函數main()。
#include <stdio.h>
int fun(int x,int y);
main()
{int a=1,b=-5,c;
c=fun(a,b);
printf(「c=%d\n」,c);
}
int fun(int x,int y)
{if(x>y)return x-y;
else return y-x;
}
2、定義一個函數,求200~500之間滿足「用4除餘1,(或)用5除餘3,(或)用7除餘4」的數,且一行列印6個。
#include <stdio.h>
void f(int n);
main()
{int n;
for(n=200;n<=500;n++)
f(n);
}
void f(int n)
{static int p=0,m=0;
if(n%4==1 || n%5==3 || n%7==4)
{p++;
printf("%4d",n);
m=1;
}
else m=0;
if(p%6==0&&m==1)printf("\n");
}
3、函數isprime( ),用來判斷一個整形數a是否為素數,若是素數,函數返回1,否則返回0,請編寫isprime( ) 函數。
#include <stdio.h>
int isprime(int a);
main()
{int a,n=0;
printf(「a=」);
scanf(「%d」,&a);
if(a>0)n=isprime(a);
if(n==1)printf(「%d是素數」,a);
else printf(「%d不是素數」,a);
}
int isprime(int a)
{int m;
for(m=2;m<a;m++)
if(a%m==0)return 0;
return 1;
}
實驗十四
1、編程實現:輸入n(n<10)個整數,按從大到小的順序對其排序。
#include <stdio.h>
main()
{int i,j,a[10],n,t;
printf(「n=」);
scanf(「%d」,&n);
for(i=0;i<n;i++)
scanf(「%d」,&a[i]);
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
for(i=0;i<n;i++)
printf(「%4d」,a[i]);
printf(「\n」);
}
實驗十五
1、用多文件模塊知識編程解決問題(題目自定)。
實驗十六
1、編程,要求實現:在主程序main( )中輸入2個整數,通過調用函數將兩者的值互換。(要求分別用值傳遞方式,地址傳遞方式以及全局外部變數傳遞方式編程)。
解(1) 用值傳遞方式編程
用值傳遞方式不能將兩者的值互換。
解(2) 用地址傳遞方式編程
#include <stdio.h>
void swap(int *x,int *y );
main()
{int x,y;
printf(「x,y=」);
scanf(「%d,%d」,&x,&y);
swap(&x,&y);
printf(「x=%d,y=%d\n」,x,y);
}
void swap(int *x,int *y )
{int temp;
temp=*x;
*x=*y;
*y=temp;
}
解(3) 用全局外部變數傳遞方式編程
#include <stdio.h>
void swap();
int x,y;
main()
{printf(「x,y=」);
scanf(「%d,%d」,&x,&y);
swap();
printf(「x=%d,y=%d\n」,x,y);
}
void swap()
{int temp;
temp=x;x=y;y=temp;
}

實驗十七
1、用遞歸方法實現求N的階乘。
#include <stdio.h>
long fact(int n);
main()
{int n;
printf(「n=」);
scanf(「%d」,&n);
if(n>=0)printf(「%d!=%ld\n」,n,fact(n));
else printf(「輸入錯誤!\n」);
}
long fact(int n)
{long p;
if(n<=1)return 1;
else p=n*fact(n-1);
return p;
}
2、用遞歸方法編寫求斐波那契數列的函數,返回值為長整型。斐波那契數列的定義為: ,並寫出相應主函數。
#include <stdio.h>
int fib(int n);
main()
{int n,i;
printf(「n=」);
scanf(「%d」,&n);
for(i=0;i<=n;i++)
printf(「%d,」,fib(i));
printf(「…\n」);
}
int fib(int n)
{ if(n==0) return 0;
if(n==1) return 1;
if(n>1) return fib(n-1)+fib(n-2);
}
實驗十八
1、統計一個文本文件(該文件您自已此前已建立)中字母、數字及其它字元各有多少個,試編程。
#include <stdio.h>
main()
{char ch;
int zm=0,sz=0,qt=0;
FILE *fp;
fp=fopen(「file1.txt」,「r」);
if(fp==NULL)
{printf(「不能打開文件file1.txt\n」);exit(0);}
while(!feof(fp))
{ch=fgetc(fp);
if((ch>=『a』&&ch<=『z』)||( ch>=『A』&&ch<=『Z』))
zm++;
else if(ch>=『0』&&ch<=『9』)
sz++;
else qt++;
}
fclose(fp);
printf(「zm=%d\n」,zm);
printf(「sz=%d\n」,sz);
printf(「qt=%d\n」,qt);
}
可用以下程序,建立文件file1.txt,並寫入20個字元到文件中。
#include "stdio.h"
main()
{int i;
char ch;
FILE *fp;
if((fp=fopen("file1.txt","w"))==NULL)
{printf("file open error!\n");
exit(0);
}
for(i=0;i<20;i++)
{ch=getchar();
fputc(ch,fp);
}
fclose(fp);
}
2、文本文件int.txt中包含若干整數,請把文件中所有數據相加,並把累加和寫入文件最後。
#include <stdio.h>
main()
{int a,sum=0;
FILE *fp;
fp=fopen("file2.txt","r");
if(fp==NULL)
{printf("不能打開文件file2.txt\n");exit(0);}
while(!feof(fp))
{fscanf(fp,"%2d",&a);
sum+=a;
}
fclose(fp);
fp=fopen("file2.txt","a");
if(fp==NULL)
{printf("不能打開文件file2.txt\n");exit(0);}
fprintf(fp,"%d",sum);
fclose(fp);
}
可用以下程序,建立文件file2.txt,並寫入10個整數到文件中。
#include "stdio.h"
main()
{int i,a;
FILE *fp;
if((fp=fopen("file2.txt","w"))==NULL)
{printf("file open error!\n");
exit(0);
}
for(i=0;i<10;i++)
{scanf("%d",&a);
fprintf(fp,"%2d",a);
}
fclose(fp);
}

Ⅵ C語言實驗題

字元需要用'',大寫字母的ascii碼比小寫字母小32,應該用減號。

ps.該程序有個問題,就是當你輸入多於10個字元的時候,只讀取了10個字元,會有字元還留在緩沖區,如果下次再讀取時會異常,建議程序結尾加個getchar();

Ⅶ 大一c語言實驗題!急!

1-3:

intf(intx){
return(x&1);
}
main(){
intx;
printf("Pleaseinputthenum:");
scanf("%d",&x);
printf("%s ",f(x)?"Odd":"Even");
}

1-4:

intisprime(inti){
if((i!=0)&&(i!=1)){
inta=2;
for(;a<i;a++){
if(!(i%a))break;
}
return(a>=i);
}else{
return0;
}
}
main(){
intn;
printf("Pleaseinputanumber:");
scanf("%d",&n);
if(isprime(n)){
printf("%disaprimenumber. ",n);
}else{
printf("%disnotaprimenumber. ",n);
}
}

1-6:

intsum(intn){
return(n==1)?1:(n+sum(n-1));
}
main(){
intn;
printf("n=");
scanf("%d",&n);
printf("sum=%d ",sum(n));
}

Ⅷ 急求===《C語言程序設計實驗·設計·習題》的答案

這是譚浩強版習題題答案,看與你的是否一致

1.5請參照本章例題,編寫一個C程序,輸出以下信息:
************
Very Goodj!
************
解:
main()
{
printf(" ************ \n");
printf("\n");
printf(" Very Good! \n");
printf("\n");
printf(" ************\n");
}
1.6編寫一個程序,輸入a b c三個值,輸出其中最大者。
解:main()
{int a,b,c,max;
printf("請輸入三個數a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max<B)
max=b;
if(max<C)
max=c;
printf("最大數為:%d",max);
}
第三章
3.3 請將下面各數用八進制數和十六進制數表示:
(1)10 (2)32 (3)75 (4)-617
(5)-111 (6)2483 (7)-28654 (8)21003
解:十 八 十六
(10)=(12)=(a)
(32)=(40)=20
(75)=(113)=4b
(-617)=(176627)=fd97
-111=177621=ff91
2483=4663=963
-28654=110022=9012
21003=51013=520b
3.5字元常量與字元串常量有什麼區別?
解:字元常量是一個字元,用單引號括起來。字元串常量是由0個或若干個字元
而成,用雙引號把它們括起來,存儲時自動在字元串最後加一個結束符號'\0'.
3.6寫出以下程序的運行結果:
#include
void main()
{
char c1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c %c\n",c4,c5);
解:程序的運行結果為:
aabb cc abc
A N
3.7將"China"譯成密碼.密碼規律:用原來的字母後面第4個字母代替原來的字母,
例如,字母"A"後面第4個字母是"E",用"E"代替"A".因此,"China"應譯為"Glmre".
請編一程序,用賦初值的議程使c1,c2,c3,c4,c5分別變成'G','1','m','r','e',並
輸出.
main()
{char c1="C",c2="h",c3="i",c4='n',c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密碼是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
3.8例3.6能否改成如下:
#include
void main()
{
int c1,c2;(原為 char c1,c2)
c1=97;
c2=98;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
}
解:可以.因為在可輸出的字元范圍內,用整型和字元型作用相同.
3.9求下面算術表達式的值.
(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)
(2)(float)(a+b)/2+(int)x%(int)y=3.5(設a=2,b=3,x=3.5,y=2.5)
3.10寫出下面程序的運行結果:
#include
void main()
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
}
解:結果: 9,11,9,10
第4章
4.4.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)
解:
main()
{
int a,b,c;
long int u,n;
float x,y,z;
char c1,c2;
a=3;b=4;c=5;
x=1.2;y=2.4;z=-3.6;
u=51274;n=128765;
c1='a';c2='b';
printf("\n");
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);
printf("x+y=%5.2f y=z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("c1='%c' or %d(ASCII)\n",c1,c2);
printf("c2='%c' or %d(ASCII)\n",c2,c2);
}
4.5請寫出下面程序的輸出結果.
結果:
57
5 7
67.856400,-789.123962
67.856400 ,-789.123962
67.86,-789.12,67.856400,-789.123962,67.856400,-789.123962
6.785640e+001,-7.89e+002
A,65,101,41
1234567,4553207,d687
65535,17777,ffff,-1
COMPUTER, COM
4.6用下面的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);
}
解:可按如下方式在鍵盤上輸入:
a=3 b=7
x=8.5 y=71.82
c1=A c2=a
說明:在邊疆使用一個或多個scnaf函數時,第一個輸入行末尾輸入的"回車"被第二
個scanf函數吸收,因此在第二\三個scanf函數的雙引號後設一個空格以抵消上行
入的"回車".如果沒有這個空格,按上面輸入數據會出錯,讀者目前對此只留有一
初步概念即可,以後再進一步深入理解.
4.7用下面的scanf函數輸入數據使a=10,b=20,c1='A',c2='a',x=1.5,y=-
3.75,z=57.8,請問
在鍵盤上如何輸入數據?
scanf("%5d%5d%c%c%f%f%*f %f",&a,&b,&c1,&c2,&y,&z);
解:
main()
{
int a,b;
float x,y,z;
char c1,c2;
scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);
}
運行時輸入:
10 20Aa1.5 -3.75 +1.5,67.8
註解:按%5d格式的要求輸入a與b時,要先鍵入三個空格,而後再打入10與20。%*f
是用來禁止賦值的。在輸入時,對應於%*f的地方,隨意打入了一個數1.5,該值不
會賦給任何變數。
4.8設圓半徑r=1.5,圓柱高h=3,求圓周長,圓面積,圓球表面積,圓球體積,圓柱體積,
用scanf輸入數據,輸出計算結果,輸出時要求有文字說明,取小數點後兩位數字.請編
程.
解:main()
{
float pi,h,r,l,s,sq,vq,vz;
pi=3.1415926;
printf("請輸入圓半徑r圓柱高h:\n");
scanf("%f,%f",&r,&h);
l=2*pi*r;
s=r*r*pi;
sq=4*pi*r*r;
vq=4.0/3.0*pi*r*r*r;
vz=pi*r*r*h;
printf("圓周長為: =%6.2f\n",l);
printf("圓面積為: =%6.2f\n",s);
printf("圓球表面積為: =%6.2f\n",sq);
printf("圓球體積為: =%6.2f\n",vz);
}
4.9輸入一個華氏溫度,要求輸出攝氏溫度,公式為C=5/9(F-32),輸出要有文字說明,
取兩位小數.
解: main()
{
float c,f;
printf("請輸入一個華氏溫度:\n");
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("攝氏溫度為:%5.2f\n",c);
}
第五章 邏輯運算和判斷選取結構
5.4有三個整數a,b,c,由鍵盤輸入,輸出其中最大的數.
main()
{
int a,b,c;
printf("請輸入三個數:");
scanf("%d,%d,%d",&a,&b,&c);
if(a<B)
if(b<C)
printf("max=%d\n",c);
else
printf("max=%d\n",b);
else if(a<C)
printf("max=%d\n",c);
else
printf("max-%d\n",a);
}
方法2:使用條件表達式.
main()
{int a,b,c,termp,max;
printf(" 請輸入 A,B,C: ");
scanf("%d,%d,%d",&a,&b,&c);
printf("A=%d,B=%d,C=%d\n",a,b,c);
temp=(a>b)?a:b;
max=(temp>c)? temp:c;
printf(" A,B,C中最大數是%d,",max);
}
5.5 main()
{int x,y;
printf("輸入x:");
scanf("%d",&x);
if(x<1)
{y=x;
printf("X-%d,Y=X=%d \n",x,y);
}
else if(x<10)
{y=2*x-1;
printf(" X=%d, Y=2*X-1=%d\n",x,y);
}
else
{y=3*x-11;
printf("X=5d, Y=3*x-11=%d \n",x,y);
}
}
(習題5-6:)自己寫的已經運行成功!不同的人有不同的演算法,這些答案僅供參考! 818pp.com
# include
void main()
{
float s,i;
char a;
scanf("%f",&s);
while(s>100||s<0)
{
printf("輸入錯誤!error!");
scanf("%f",&s);
}
i=s/10;
switch((int)i)
{
case 10:
case 9: a='A';break;
case 8: a='B';break;
case 7: a='C';break;
case 6: a='D';break;
case 5:
case 4:
case 2:
case 1:
case 0: a='E';
}
printf("%c",a);
}
http://818pp.com/
5.7給一個不多於5位的正整數,要求:1.求它是幾位數2.分別列印出每一位數字3.
按逆序列印出各位數字.例如原數為321,應輸出123.
main()
{
long int num;
int indiv,ten,hundred,housand,tenthousand,place;
printf("請輸入一個整數(0-99999):");
scanf("%ld",&num);
if(num>9999)
place=5;
else if(num>999)
place=4;
else if(num>99)
place=3;
else if(num>9)
place=2;
else place=1;
printf("place=%d\n",place);
printf("每位數字為:");
ten_thousand=num/10000;
thousand=(num-tenthousand*10000)/1000;
hundred=(num-tenthousand*10000-thousand*1000)/100;
ten=(num-tenthousand*10000-thousand*1000-hundred*100)/10;
indiv=num-tenthousand*10000-thousand*1000-hundred*100-ten*10;
switch(place)
{case 5:printf("%d,%d,%d,%d,%d",tenthousand,thousand,hundred,ten,indiv);
printf("\n反序數字為:");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,tenthousand);
break;
case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序數字為:");
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);
break;
case 3:printf("%d,%d,%d\n",hundred,ten,indiv);
printf("\n反序數字為:");
printf("%d%d%d\n",indiv,ten,hundred);
case 2:printf("%d,%d\n",ten,indiv);
printf("\n反序數字為:");
printf("%d%d\n",indiv,ten);
case 1:printf("%d\n",indiv);
printf("\n反序數字為:");
printf("%d\n",indiv);
}
}
5.8
1.if語句
main()
{long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
scanf("%ld",&i);
if(i<=1e5)bonus=i*0.1;
else if(i<=2e5)bonus=bon1+(i-100000)*0.075;
else if(i<=4e5)bonus=bon2+(i-200000)*0.05;
else if(i<=6e5)bonus=bon4+(i-400000)*0.03;
else if(i<=1e6)bonus=bon6+(i-600000)*0.015;
else bonus=bon10+(i-1000000)*0.01;
printf("bonus=%10.2f",bonus);
}
用switch語句編程序
main()
{long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
int branch;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
scanf("%ld",&i);
branch=i/100000;
if(branch>10)branch=10;
switch(branch)
{case 0:bonus=i*0.1;break;
case 1:bonus=bon1+(i-100000)*0.075;break;
case 2:
case 3:bonus=bon2+(i-200000)*0.05;break;
case 4:
case 5:bonus=bon4+(i-400000)*0.03;break;
case 6:
case 7
case 8:
case 9:bonus=bon6+(i-600000)*0.015;break;
case 10:bonus=bon10+(i-1000000)*0.01;
}
printf("bonus=%10.2f",bonus);
} http://818pp.com/

5.9 輸入四個整數,按大小順序輸出.
main()
{int t,a,b,c,d;
printf("請輸入四個數:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n\n a=%d,b=%d,c=%d,d=%d \n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b;b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
printf("\n 排序結果如下: \n");
printf(" %d %d %d %d \n",a,b,c,d);
}
5.10塔
main()
{
int h=10;
float x,y,x0=2,y0=2,d1,d2,d3,d4;
printf("請輸入一個點(x,y):");
scanf("%f,%f",&x,&y);
d1=(x-x0)*(x-x0)+(y-y0)(y-y0);
d2=(x-x0)*(x-x0)+(y+y0)(y+y0);
d3=(x+x0)*(x+x0)+(y-y0)*(y-y0);
d4=(x+x0)*(x+x0)+(y+y0)*(y+y0);
if(d1>1 && d2>1 && d3>1 && d4>1)
h=0;
printf("該點高度為%d",h);
}

Ⅸ C語言實驗題——字元編碼

#intclude<stdio.h>
void main()
{
int i=0;
char chr,a[5];
for(i=0;i<55;i++)
{
scanf("%c",&chr);
a[i]=chr+4;
}
printf("password is %s",.a);
}

Ⅹ C語言實驗

哈夫曼編碼(Huffman Coding)是一種編碼方式,以哈夫曼樹—即最優二叉樹,帶權路徑長度最小的二叉樹,經常應用於數據壓縮。 在計算機信息處理中,「哈夫曼編碼」是一種一致性編碼法(又稱"熵編碼法"),用於數據的無損耗壓縮。這一術語是指使用一張特殊的編碼表將源字元(例如某文件中的一個符號)進行編碼。這張編碼表的特殊之處在於,它是根據每一個源字元出現的估算概率而建立起來的(出現概率高的字元使用較短的編碼,反之出現概率低的則使用較長的編碼,這便使編碼之後的字元串的平均期望長度降低,從而達到無損壓縮數據的目的)。這種方法是由David.A.Huffman發展起來的。 例如,在英文中,e的出現概率很高,而z的出現概率則最低。當利用哈夫曼編碼對一篇英文進行壓縮時,e極有可能用一個位(bit)來表示,而z則可能花去25個位(不是26)。用普通的表示方法時,每個英文字母均佔用一個位元組(byte),即8個位。二者相比,e使用了一般編碼的1/8的長度,z則使用了3倍多。倘若我們能實現對於英文中各個字母出現概率的較准確的估算,就可以大幅度提高無損壓縮的比例。

本文描述在網上能夠找到的最簡單,最快速的哈夫曼編碼。本方法不使用任何擴展動態庫,比如STL或者組件。只使用簡單的C函數,比如:memset,memmove,qsort,malloc,realloc和memcpy。
因此,大家都會發現,理解甚至修改這個編碼都是很容易的。

背景
哈夫曼壓縮是個無損的壓縮演算法,一般用來壓縮文本和程序文件。哈夫曼壓縮屬於可變代碼長度演算法一族。意思是個體符號(例如,文本文件中的字元)用一個特定長度的位序列替代。因此,在文件中出現頻率高的符號,使用短的位序列,而那些很少出現的符號,則用較長的位序列。
編碼使用
我用簡單的C函數寫這個編碼是為了讓它在任何地方使用都會比較方便。你可以將他們放到類中,或者直接使用這個函數。並且我使用了簡單的格式,僅僅輸入輸出緩沖區,而不象其它文章中那樣,輸入輸出文件。
bool CompressHuffman(BYTE *pSrc, int nSrcLen, BYTE *&pDes, int &nDesLen);
bool DecompressHuffman(BYTE *pSrc, int nSrcLen, BYTE *&pDes, int &nDesLen);
要點說明
速度
為了讓它(huffman.cpp)快速運行,我花了很長時間。同時,我沒有使用任何動態庫,比如STL或者MFC。它壓縮1M數據少於100ms(P3處理器,主頻1G)。
壓縮
壓縮代碼非常簡單,首先用ASCII值初始化511個哈夫曼節點:
CHuffmanNode nodes[511];
for(int nCount = 0; nCount < 256; nCount++)
nodes[nCount].byAscii = nCount;
然後,計算在輸入緩沖區數據中,每個ASCII碼出現的頻率:
for(nCount = 0; nCount < nSrcLen; nCount++)
nodes[pSrc[nCount]].nFrequency++;
然後,根據頻率進行排序:
qsort(nodes, 256, sizeof(CHuffmanNode), frequencyCompare);
現在,構造哈夫曼樹,獲取每個ASCII碼對應的位序列:
int nNodeCount = GetHuffmanTree(nodes);
構造哈夫曼樹非常簡單,將所有的節點放到一個隊列中,用一個節點替換兩個頻率最低的節點,新節點的頻率就是這兩個節點的頻率之和。這樣,新節點就是兩個被替換節點的父節點了。如此循環,直到隊列中只剩一個節點(樹根)。
// parent node
pNode = &nodes[nParentNode++];
// pop first child
pNode->pLeft = PopNode(pNodes, nBackNode--, false);
// pop second child
pNode->pRight = PopNode(pNodes, nBackNode--, true);
// adjust parent of the two poped nodes
pNode->pLeft->pParent = pNode->pRight->pParent = pNode;
// adjust parent frequency
pNode->nFrequency = pNode->pLeft->nFrequency + pNode->pRight->nFrequency;
這里我用了一個好的訣竅來避免使用任何隊列組件。我先前就直到ASCII碼只有256個,但我分配了511個(CHuffmanNode nodes[511]),前255個記錄ASCII碼,而用後255個記錄哈夫曼樹中的父節點。並且在構造樹的時候只使用一個指針數組(ChuffmanNode *pNodes[256])來指向這些節點。同樣使用兩個變數來操作隊列索引(int nParentNode = nNodeCount;nBackNode = nNodeCount –1)。
接著,壓縮的最後一步是將每個ASCII編碼寫入輸出緩沖區中:
int nDesIndex = 0;
// loop to write codes
for(nCount = 0; nCount < nSrcLen; nCount++)
{
*(DWORD*)(pDesPtr+(nDesIndex>>3)) |=
nodes[pSrc[nCount]].dwCode << (nDesIndex&7);
nDesIndex += nodes[pSrc[nCount]].nCodeLength;
}
(nDesIndex>>3): >>3 以8位為界限右移後到達右邊位元組的前面
(nDesIndex&7): &7 得到最高位.
注意:在壓縮緩沖區中,我們必須保存哈夫曼樹的節點以及位序列,這樣我們才能在解壓縮時重新構造哈夫曼樹(只需保存ASCII值和對應的位序列)。
解壓縮
解壓縮比構造哈夫曼樹要簡單的多,將輸入緩沖區中的每個編碼用對應的ASCII碼逐個替換就可以了。只要記住,這里的輸入緩沖區是一個包含每個ASCII值的編碼的位流。因此,為了用ASCII值替換編碼,我們必須用位流搜索哈夫曼樹,直到發現一個葉節點,然後將它的ASCII值添加到輸出緩沖區中:
int nDesIndex = 0;
DWORD nCode;
while(nDesIndex < nDesLen)
{
nCode = (*(DWORD*)(pSrc+(nSrcIndex>>3)))>>(nSrcIndex&7);
pNode = pRoot;
while(pNode->pLeft)
{
pNode = (nCode&1) ? pNode->pRight : pNode->pLeft;
nCode >>= 1;
nSrcIndex++;
}
pDes[nDesIndex++] = pNode->byAscii;
}