用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;
 }