最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

安徽大學 | 高級語言程序設計(C語言) 期末考試復習 設計題 2023

2023-02-28 01:27 作者:超人就是zdc233  | 我要投稿

課程例題和代碼公開 2023.2.25

案例1:交換變量

從鍵盤上輸入2個變量a和b,交換他們。

//數(shù)字型
#include<stdio.h>

int main(){
??int a,b;
??scanf("%d%d",&a,&b);
??int t;
??t=a;
??a=b;
??b=t;
??printf("%d %d",a,b);
??return 0;
}
//字符串
#include<stdio.h>
#include<string.h>
int main(){
??char a[10],b[10];
??scanf("%s%s",a,b);
??char t[10];
??strcpy(t,a);
??strcpy(a,b);
??strcpy(b,t);
??printf("%s %s",a,b);
??return 0;
}

案例2:求最值

從鍵盤上輸入n和n個元素,找出最大值和最小值。

#include<stdio.h>

int main(){
??int a[100],n;
??scanf("%d",&n);
??int i;
??for(i=0;i<n;i++)
????scanf("%d",&a[i]);
??int max=a[0],min=a[0];
??for(i=0;i<n;i++){
????if(a[i]>max)??max=a[i];
????if(a[i]<min)??min=a[i];
?}
??printf("最大值是%d 最小值是%d",max,min);
??return 0;
}

案例3:三個數(shù)排序

從鍵盤上輸入三個數(shù),按從小到大的順序排列。

//正常
#include<stdio.h>

int main(){
??int a,b,c,t;
??scanf("%d%d%d",&a,&b,&c);
??if(a>b){
????t=a;
????a=b;
????b=t;
?}
??if(a>c){
????t=a;
????a=c;
????c=t;
?}
??if(b>c){
????t=b;
????b=c;
????c=t;
?}
??printf("%d %d %d",a,b,c);
}
//函數(shù)
#include<stdio.h>

void swap(int *m,int *n){
??int t;
??t=*m;
??*m=*n;
??*n=t;
}

int main(){
??int a,b,c;
??scanf("%d%d%d",&a,&b,&c);
??if(a>b) swap(&a,&b);
??if(a>c) swap(&a,&c);
??if(b>c) swap(&b,&c);
??printf("%d %d %d",a,b,c);
}

案例4:選擇法排序

從鍵盤上輸入n和n個元素,按從小到大順序排列。

//從小到大
#include<stdio.h>

int main(){
??int a[100],n;
??scanf("%d",&n);
??int i,j,minpos,t;
??for(i=0;i<n;i++)??scanf("%d",&a[i]);
??for(i=0;i<n-1;i++){
????minpos=i+1;
????for(j=i+1;j<n;j++){
??????if(a[j]<a[minpos]) minpos=j;
???}
????if(a[i]>a[minpos]){
??????t=a[i];
??????a[i]=a[minpos];
??????a[minpos]=t;
???}
?}
??for(i=0;i<n;i++)??printf("%d ",a[i]);
}
//從大到小,函數(shù)
#include<stdio.h>

void sort(int n,int a[]) {
??int i, j, maxpos, t;
??for (i = 0; i < n - 1; i++) {
????maxpos = i + 1;
????for (j = i + 1; j < n; j++) {
??????if (a[j] > a[maxpos]) maxpos = j;
???}
????if (a[i] < a[maxpos]) {
??????t = a[i];
??????a[i] = a[maxpos];
??????a[maxpos] = t;
???}
?}
}

int main() {
??int a[100], n;
??scanf("%d", &n);
??int i;
??for (i = 0; i < n; i++) scanf("%d", &a[i]);
??sort(n, a);
??for (i = 0; i < n; i++) printf("%d ", a[i]);
}
//從小到大(補充)
#include<stdio.h>

int main(){
??int a[100],n;
??scanf("%d",&n);
??int i,j,minpos,t;
??for(i=0;i<n;i++)??scanf("%d",&a[i]);
??for(i=0;i<n-1;i++){
????minpos=i;//改了這一處
????for(j=i+1;j<n;j++){
??????if(a[j]<a[minpos]) minpos=j;
???}
????if(minpos!=i){//和這一處
??????t=a[i];
??????a[i]=a[minpos];
??????a[minpos]=t;
???}
?}
??for(i=0;i<n;i++)??printf("%d ",a[i]);
}

案例5:冒泡法排序

從鍵盤上輸入n和n個元素,按從小到大順序排列。

#include<stdio.h>

int main(){
??int a[100],n;
??scanf("%d",&n);
??int i,j,t;
??for(i=0;i<n;i++)??scanf("%d",&a[i]);
??for(i=0;i<n-1;i++){
????for(j=0;j<n-1-i;j++){
??????if(a[j]>a[j+1]){
????????t=a[j];
????????a[j]=a[j+1];
????????a[j+1]=t;
?????}
???}
?}
??for(i=0;i<n;i++) printf("%d",a[i]);
}

案例6:二分法求根

用二分法求方程$2x^{3} -4x^{2}+3x-6=0$在-10到10之間的一個根

#include<stdio.h>
#include<math.h>

float f(float x){
??return 2*x*x*x-4*x*x+3*x-6;
}

int main(){
??float l,r,mid;
??l=-10;
??r=10;
??do{
????mid=(l+r)/2;
????if(f(l)*f(mid)<0)?r=mid;
????else??l=mid;
?}while(fabs(f(mid))>1e-4);
??printf("%.2f",mid);
}

案例7:百雞問題

用100元買100只雞,已知一只公雞5元,一只母雞3元,3只小雞1元。求買公雞,母雞,小雞各多少只。

#include<stdio.h>
#include<math.h>
int main(){
??int z;
??float x,y;
??for(z=76;z<=85;z++){
????x=-100+4.0/3*z;
????y=200-7.0/3*z;
????if(fabs(x-(int)x)<1e-2 && fabs(y-(int)y)<1e-2)
??????printf("%d %d %d\n",(int)x,(int)y,z);
?}
}

案例8:分數(shù)統(tǒng)計

輸入班級人數(shù)n和每個人的成績,求落在下面5個分數(shù)段的人數(shù),90分及以上,80-89,70-79,60-69,60分以下。

//if寫法
#include<stdio.h>

int main(){
??int n,score,c1=0,c2=0,c3=0,c4=0,c5=0;
??scanf("%d",&n);
??int i;
??for(i=0;i<n;i++){
????scanf("%d",&score);
????if(score>=90) c1++;
????else if(80<=score && score<=89) c2++;
????else if(70<=score && score<=79) c3++;
????else if(60<=score && score<=69) c4++;
????else c5++;
?}
??printf("%d %d %d %d %d",c1,c2,c3,c4,c5);
}
//switch寫法
#include<stdio.h>

int main(){
??int n,score,c1=0,c2=0,c3=0,c4=0,c5=0;
??scanf("%d",&n);
??int i;
??for(i=0;i<n;i++){
????scanf("%d",&score);
????switch(score/10){
??????case 10:
??????case 9:c1++;break;
??????case 8:c2++;break;
??????case 7:c3++;break;
??????case 6:c4++;break;
??????default:c5++;
???}
?}
??printf("%d %d %d %d %d",c1,c2,c3,c4,c5);
}

案例9:字符統(tǒng)計

輸入一段字符,求其中大寫字母,小寫字母,數(shù)字,空格,其他字符的個數(shù)。

//單字符
#include<stdio.h>

int main(){
??int c1=0,c2=0,c3=0,c4=0,c5=0;
??char c;
??c=getchar();
??while(c!='\n'){
????if('A'<=c && c<='Z')??c1++;
????else if('a'<=c && c<='z')?c2++;
????else if('0'<=c && c<='9')?c3++;
????else if(c==' ') c4++;
????else??c5++;
????c=getchar();
?}
??printf("%d %d %d %d %d",c1,c2,c3,c4,c5);
}
//字符串
#include<stdio.h>

int main(){
??int c1=0,c2=0,c3=0,c4=0,c5=0;
??char c[100];
??gets(c);
??int i=0;
??while(c[i]!='\0'){
????if('A'<=c[i] && c[i]<='Z')??c1++;
????else if('a'<=c[i] && c[i]<='z')?c2++;
????else if('0'<=c[i] && c[i]<='9')?c3++;
????else if(c[i]==' ') c4++;
????else??c5++;
????i++;
?}
??printf("%d %d %d %d %d",c1,c2,c3,c4,c5);
}

案例10:斐波那契數(shù)列

1,1,2,3,5,8,是斐波那契數(shù)列,求斐波那契數(shù)列第n項

//循環(huán)法
#include<stdio.h>

int main(){
??int n;
??scanf("%d",&n);
??if(n<=2){
????printf("1");
????return 0;
?}
??int sum,sum1,sum2,i,sum0=0;
??sum1=sum2=1;
??for(i=3;i<=n;i++){
????sum=sum1+sum2;
????sum2=sum1;
????sum1=sum;
?}
??printf("%d",sum);
}
//函數(shù)遞歸
#include<stdio.h>

int func(int n){
??if(n<=2)??return 1;
??else??return func(n-1)+ func(n-2);
}

int main(){
??int n;
??scanf("%d",&n);
??printf("%d",func(n));
}

案例11:a+aa+aaa+...

求給定常數(shù)a和項數(shù)n,求S=a+aa+aaa+...的和

#include<stdio.h>

int main(){
??int a,n,sum=0,sum1=0;
??scanf("%d%d",&a,&n);
??int i;
??for(i=0;i<n;i++){
????sum1=sum1*10+a;
????sum+=sum1;
?}
??printf("%d",sum);
}

案例12:打印菱形

#include<stdio.h>

int main(){
??int n,i,j;
??scanf("%d",&n);
??for(i=1;i<=n;i++){
????for(j=0;j<n-i;j++)?printf(" ");
????for(j=0;j<2*i-1;j++)??printf("*");
????printf("\n");
?}
??for(i=1;i<=n-1;i++){
????for(j=0;j<i;j++)??printf(" ");
????for(j=0;j<2*n-1-2*i;j++)??printf("*");
????printf("\n");
?}
}

案例13:水仙花數(shù)

水仙花數(shù)是一個3位正整數(shù),各位立方和等于該數(shù)本身,例如407=$4^{3}+0^{3}+7^{3}$求所有的水仙花數(shù)

#include<stdio.h>

int main(){
??int i,a,b,c;
??for(i=100;i<=999;i++){
????a=i/100;
????b=i/10%10;
????c=i%10;
????if(a*a*a+b*b*b+c*c*c==i)??printf("%d\n",i);
?}
}

案例14:完數(shù)

完數(shù)是指該數(shù)的因數(shù)之和等于本身,例如6=1+2+3,給定一個數(shù),判斷是不是和數(shù)。

//基礎(chǔ)判斷和數(shù)
#include<stdio.h>

int main(){
??int n,i,sum=0;
??scanf("%d",&n);
??for(i=1;i<n;i++){
????if(n%i==0)?sum+=i;
?}
??if(n==sum)?printf("yes");
??else??printf("no");
}
//找1-100000的和數(shù)
#include<stdio.h>
#include<math.h>
int main(){
??int j,i,sum;

??for(i=1;i<=100000;i++) {
????sum=1;
????int sqt=sqrt(i);
????for(j=2;j<=sqt;j++){
??????if(i%j==0)?sum=sum+j+i/j;
???}
????if(sqt*sqt==i)?sum-=sqt;
????if(i==sum)?printf("%d\n",i);
?}

}
//函數(shù)判斷
#include<stdio.h>

bool heshu(int n){
??int i,sum=0;
??for(i=1;i<n;i++){
????if(n%i==0)?sum+=i;
?}
??if(n==sum)?return true;
??else??return false;
}

int main(){
??int n;
??scanf("%d",&n);
??printf("%d",heshu(n));

}

案例15:質(zhì)數(shù)/素數(shù)判斷

素數(shù)是因子只有1和本身的數(shù),最小的素數(shù)為2,給定一個數(shù),判斷是不是素數(shù)。

#include<stdio.h>
#include<math.h>
bool is_prime(int n){
??int i,sqt=sqrt(n);
??if(n==1)??return false;
??for(i=2;i<=sqt;i++)
????if(n%i==0)?return false;
??return true;
}
int main(){
??int n;
??scanf("%d",&n);
??printf("%d", is_prime(n));
}

案例16:最大公因數(shù)/最小公倍數(shù)

給兩個數(shù),求其最大公因數(shù)和最小公倍數(shù)

#include<stdio.h>

int main(){
??int m,n,r;
??scanf("%d%d",&m,&n);
??int mult=m*n;
??r=m%n;
??while(r){
????m=n;
????n=r;
????r=m%n;
?}
??int gcd=n;
??int lcm=mult/gcd;
??printf("%d %d",gcd,lcm);
}

案例17:回文字符串

字符串關(guān)于中心對稱稱為回文字符串,給一個字符串,判斷是否為回文字符串。

//代碼
#include<stdio.h>
#include<string.h>
int main(){
??char c[20];
??gets(c);
??int i;
??for(i=0;i<strlen(c)/2;i++){
????if(c[i]!=c[strlen(c)-1-i]){
??????printf("no");
??????return 0;
???}
?}
??printf("yes");
}
//函數(shù)
#include<stdio.h>
#include<string.h>

bool is_huiwen(char c[]){
??int i;
??for(i=0;i<strlen(c)/2;i++)
????if(c[i]!=c[strlen(c)-1-i])?return false;
??return true;
}

int main(){
??char c[20];
??gets(c);
??printf("%d", is_huiwen(c));
}

案例18:矩陣轉(zhuǎn)置

輸入3x3的矩陣,編寫一個函數(shù),轉(zhuǎn)置3x3矩陣回原數(shù)組,然后打印輸出

//代碼
#include<stdio.h>

int main(){
??int a[3][3];
??int i,j,t;
??for(i=0;i<3;i++)
????for(j=0;j<3;j++)
??????scanf("%d",&a[i][j]);
??for(i=0;i<3;i++){
????for(j=0;j<i;j++){
??????t=a[i][j];
??????a[i][j]=a[j][i];
??????a[j][i]=t;
???}
?}
??for(i=0;i<3;i++){
????for(j=0;j<3;j++)
??????printf("%d ",a[i][j]);
????printf("\n");
?}
}
//函數(shù)
#include<stdio.h>

void func(int a[3][3]){
??int i,j,t;
??for(i=0;i<3;i++){
????for(j=0;j<i;j++){
??????t=a[i][j];
??????a[i][j]=a[j][i];
??????a[j][i]=t;
???}
?}
}

int main(){
??int a[3][3];
??int i,j;
??for(i=0;i<3;i++)
????for(j=0;j<3;j++)
??????scanf("%d",&a[i][j]);
??func(a);
??for(i=0;i<3;i++){
????for(j=0;j<3;j++)
??????printf("%d ",a[i][j]);
????printf("\n");
?}
}

案例19:結(jié)構(gòu)體統(tǒng)計

輸入6名學生的學號,姓名,3門課成績,將平均分最低的同學的學號,姓名,3門課成績打印出來。

#include<stdio.h>

int main(){
??struct STUDENT{
????char id[10];//學號
????char name[10];//姓名
????float score[3];//三門課的成績
????float ave;//平均分
?}stu[6];
??int i;
??for(i=0;i<6;i++){
????scanf("%s%s%f%f%f",stu[i].id,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
????stu[i].ave=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
?}
??float minave=stu[0].ave;
??int minpos=0;
??for(i=0;i<6;i++){
????if(stu[i].ave<minave) {
??????minave=stu[i].ave;
??????minpos=i;
???}
?}
??printf("%s %s %.2f %.2f %.2f",stu[minpos].id,stu[minpos].name,stu[minpos].score[0],stu[minpos].score[1],stu[minpos].score[2]);

}

案例20:結(jié)構(gòu)體閏年

輸入一年中的某一天(年,月,日),求該日是這一年的第幾天。

#include<stdio.h>

int main(){
??struct DATE{
????int year;
????int month;
????int day;
?}date;
??scanf("%d%d%d",&date.year,&date.month,&date.day);
??int n=date.day;
??int i,flag=0;
??if(date.year%4==0&&date.year%100!=0 || date.year%400==0)
????flag=1;
??if(flag && date.month>2)
????n++;
??for(i=1;i<date.month;i++){
????if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
??????n+=31;
????else if(i==2)
??????n+=28;
????else
??????n+=30;
?}
??printf("%d",n);
}

案例21:文件合并

flie1.dat和file2.dat里各有一行字符串,合并他們到新文件file3.dat

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(){
??FILE *fp1;
??if((fp1= fopen("file1.dat","r"))==NULL){
????printf("File can not open!\n");
????exit(0);
?}
??FILE *fp2;
??if((fp2= fopen("file2.dat","r"))==NULL){
????printf("File can not open!\n");
????exit(0);
?}
??char c1[20],c2[10];
??fscanf(fp1,"%s",c1);
??fscanf(fp2,"%s",c2);
??fclose(fp1);
??fclose(fp2);

??strcat(c1,c2);

??FILE *fp3;
??if((fp3 = fopen("file3.dat","w"))==NULL){
????printf("File can not open!\n");
????exit(0);
?}
??fprintf(fp3,"%s",c1);
??fclose(fp3);
}

特例1:不借助fabs函數(shù)求絕對值

float my_fabs(float x){
??if(x<0) return -x;
??else return x;
}

特例2:不借助sqrt函數(shù)開方

float my_sqrt(float a){
??float x0=1,x1;
??do{
????x1=(x0+a/x0)/2;
????x0=x1;
?}while(my_fabs(x1*x1-a)>1e-6);
??return x1;
}

特例3:不借助strlen測字符串長度

//數(shù)組下標
int my_strlen(char c[]){
??int length=0,i=0;
??while(c[i++]!='\0')
????length++;
??return length;
}
//指針
int my_strlen(char c[]){
??char *p=c;
??int length=0;
??while(*p++!='\0')
????length++;
??return length;
}

特例4:不借助strcat拼接字符串

//主函數(shù)寫法
#include<stdio.h>

int main(){
??char c1[20],c2[20],*p1=c1,*p2=c2;
??gets(c1);
??gets(c2);
??while(*++p1);
??while(*p1++=*p2++);
??printf("%s",c1);
}
//函數(shù)寫法
#include<stdio.h>

void my_strcat(char c1[],char c2[]){
??char *p1=c1,*p2=c2;
??while(*++p1);
??while(*p1++=*p2++);
}

int main(){
??char c1[20],c2[20];
??gets(c1);
??gets(c2);
??my_strcat(c1,c2);
??printf("%s",c1);
}

特例5:不借助strcmp比較字符串

#include<stdio.h>

int my_strcmp(char c1[],char c2[]){
??char *p1=c1,*p2=c2;
??while(*p1==*p2 && *p1!='\0'){
????p1++;p2++;
?}
??return *p1-*p2;
}

int main(){
??char c1[20],c2[20];
??gets(c1);
??gets(c2);
??if(my_strcmp(c1,c2)>0)?printf("c1大");
??else if(my_strcmp(c1,c2)<0) printf("c2大");
??else printf("一樣大");
}

特例6:不借助strcpy復制字符串

#include<stdio.h>

int main(){
??char c1[20]="blue bird",c2[20],*p1=c1,*p2=c2;
??gets(c2);
??while(*p1++=*p2++);
??printf("%s",c1);
}


代碼已上傳到筆記

安徽大學 | 高級語言程序設計(C語言) 期末考試復習 設計題 2023的評論 (共 條)

分享到微博請遵守國家法律
龙泉市| 北京市| 永城市| 万源市| 西乡县| 贡山| 鲁山县| 通榆县| 汉中市| 汝城县| 香河县| 石嘴山市| 南城县| 肥城市| 广安市| 双峰县| 商南县| 巧家县| 新龙县| 万盛区| 亚东县| 青龙| 乌鲁木齐市| 克什克腾旗| 永和县| 汉源县| 沾化县| 滁州市| 台中县| 正蓝旗| 宜宾市| 哈巴河县| 乌什县| 鲜城| 易门县| 论坛| 忻城县| 英吉沙县| 鲁甸县| 治县。| 丘北县|