本文主要是介绍重庆大学复试上机笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
用C语言给文件中写入一个字符串
#include<stdio.h>
#include<string.h>
int main(){FILE *fp=fopen("D:\\out.txt","w"); //以写的方式打开文件,如果该文件不存在,则创建该文件 fprintf(fp,"%s","ojbk!"); fclose(fp); return 0;
}
用C语言从文件中提取一个字符串
#include<string.h>
int main(){FILE *fp=fopen("D:\\in.txt","r"); //以读的方式打开文件,文件必须先创建好 if(fp==NULL) {printf("文件打开失败!退出登录!");}else printf("文件打开成功,请输入密码:");char str[100],s[100];fscanf(fp,"%s",str);scanf("%s",s);if(strcmp(str,s)==0) printf("密码输入正确!\n");else printf("密码输入错误!\n");fclose(fp); //关闭文件,这个很重要 return 0;
}
2016年c语言上机第三题
输入包含字母和数字,要求统计每个字符的出现次数,并按要求格式输出,30分。例如:
输入:AsdaAffid333778
输出:a:3
d:2
f:2
i:1
s:1
3:3
7:2
8:1
注意:输入是从文件中读入,输出是写入文件中
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){char str[200];char s[200];int Hash[40];FILE *fp=fopen("D:\\in.txt","r"),*p=fopen("D:\\out.txt","w");//第一个文件要先创建出来,否则会出错 if(fp){int num;fscanf(fp,"%s",str);strcpy(s,str); //这个地方可以直接用str不用拷贝到s中,由于我编译的时候出现了问题,稍微改了一下才通过的。int len=strlen(s);int i;for(i=0;i<80;i++){Hash[i]=0;}printf("%d\n",len);for(i=0;i<len;i++){if(s[i]>='0' && s[i]<='9'){Hash[s[i]-'0'+26]++;}else if(s[i]>='A' && s[i]<='Z'){Hash[s[i]-'A']++;}else{Hash[s[i]-'a']++;}}for(i=0;i<36;i++){if(Hash[i]!=0){if(i>=26) fprintf(p,"%d:%d\n",i-26,Hash[i]);else fprintf(p,"%c:%d\n",i+'a',Hash[i]);}}fclose(fp);fclose(p); }else{printf("打开失败!\n");}return 0;
}
第四题:求最大公约数和最小公倍数,从文件中读和写入文件中。
#include<stdio.h>
#include<string.h>
int gcd(int x,int y){return x%y==0?y:gcd(y,x%y);
}
int main(){int a,b;FILE *fp=fopen("D:\\input.txt","r");FILE *p=fopen("D:\\output.txt","w");fscanf(fp,"%d%d",&a,&b);fprintf(p,"最大公约数:%d\n最小公倍数:%d",gcd(a,b),a/gcd(a,b)*b);fclose(fp);fclose(p);return 0;
}
质因子分解:90=2*3*3*5
#include<stdio.h>
#define N 1000
int prime[N];
int p[N]={0};
int k=0;
void primes(){int i,j;for(i=2;i<N;i++){while(!p[i]){prime[k++]=i;for(j=i*i;j<N;j+=i){p[j]=1;}}}
}
int main(){
int input;
scanf("%d",&input);
primes();
int t;
int tag=1;
printf("%d=",input);
for(t=0;t<k;t++){while(input%prime[t]==0){printf(tag==1?"%d":"*%d",prime[t]);input /= prime[t];tag=0;}
}
return 0;
}
十进制化为二进制 35 = 100011
#include<stdio.h>
int main(){
int n,i;
scanf("%d",&n);
int arr[100],k=0;
do{arr[k++]=n%2;n/=2;
}while(n!=0);
for(i=k-1;i>=0;i--){printf("%d",arr[i]);
}
printf("\n");
return 0;
}
一维数组打印杨辉三角
1
1 1
1 2 1
1 3 3 1
#include<stdio.h>
int main(){int arr[100];int n,i,j;scanf("%d",&n);if(n==1) printf("1\n");if(n>=2) printf("1\n1 1\n");arr[0]=1;arr[1]=1; for(i=2;i<n;i++){arr[i]=1;for(j=i-1;j>0;j--){arr[j]=arr[j]+arr[j-1];} for(j=0;j<=i;j++){printf(j==0?"%d":" %d",arr[j]);}printf("\n"); }return 0;
}
百位以内大数相加
#include<stdio.h>
#include<string.h>void reverse(char s[]){int len=strlen(s);int i;for(i=0;i<len/2;i++){int tmp=s[i];s[i]=s[len-1-i];s[len-1-i]=tmp;}
}
int main(){char str1[110],str2[110],str[110]={0};scanf("%s %s",str1,str2);reverse(str1);reverse(str2);int len1=strlen(str1);int len2=strlen(str2);int len = len1>len2?len1:len2;int c=0,i;for(i=0;i<len;i++){int numA = i < len1?str1[i]-'0':0;int numB = i < len2?str2[i]-'0':0; str[i]=(numA + numB + c)%10 + '0';c = (numA + numB + c)/10;}if(c!=0) str[i]=c+'0';reverse(str);puts(str);return 0;
}
写出int范围内2的幂的数
//直接用2乘
#include<stdio.h>
#define N 2e10
int main(){printf("0 ");long long i; for(i=2;i<N;i=i*2) {printf("%lld ",i);}return 0;
}
输出小于1000的最大的10个素数
#include<stdio.h>
#include<math.h>
int prime(int x){if(x<=1) return 0;int i;for(i=2;i<=(int)sqrt(x);i++){if(x%i==0) return 0;}return 1;
}
int main(){int i,j=0;for(i=999;i>0;i--){if(prime(i)) {printf("%d ",i);j++;if(j==10) break;}} return 0;
}
判断一个数是否为对称素数
#include<stdio.h>#include<math.h>#include<string.h>int is_prime(int n){if(n<=1) return 0; int i;for(i=2;i<=(int)sqrt(n);i++){if(n%i==0) return 0;}return 1;} int is_symmetry(int n){int arr[20]={0};int i,k=0;do{arr[k++]=n%10;n/=10;}while(n!=0);for(i=0;i<k/2;i++){if(arr[i]!=arr[k-1-i]) return 0;}return 1;}int main(){int x;scanf("%d",&x);if(is_prime(x)&&is_symmetry(x))printf("YES!\n");else printf("NO!\n");return 0;}
这篇关于重庆大学复试上机笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!