doubleyong
管理员
管理员
  • 最后登录2025-12-02
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:3551回复:0

c 语言练习2

楼主#
更多 发布于:2022-11-23 21:27
//第一题


//1.在正整数中找出最小的且被3、5、7、9除后余数分别为1、3、5、7的数,
//将该数以格式“%d”写到文件f3.dat中。


int main()
{
    int i;
    FILE *fp = fopen("f3.dat","w");
    // 打开文件,且可写
    if(fp ==NULL){
        printf("File Open Error.\n");
        exit(1); // 1 是什么意思
    }
    // int 类型,能取的最大整数32767
    for(i=0;i<32767;i++){
        if(   i % 3 == 1
           && i % 5 == 3
           && i % 7 == 5
           && i % 9 == 7){
            printf("%d\n",i);
            fprintf(fp,"%d ",i);
            // 将数字写入文件
            break;
           }
    }
    fclose(fp);


    return 0;
}


//2.编写函数ltrim(),用来删除字符串中的前导空格,中间和尾部的空格不删除。
//例如:字符串为"A BC DEF ",删除后的结果是"A BC DEF"。要求函数形参采用指针变量。


int main(){
    void ltrim(char *a);
    char s[100]; //必须指定数组的长度
    printf("请输入一个前面带空格的字符串");
    gets(s);
    ltrim(s);
    printf("删除空格后的字符串");
    puts(s);


  return 0;
}


// 不需要function 关键字
// 必须写出函数的返回值 ,参数必须写出类型
void ltrim(char *a){
    char *p;
    int i = 0;
    p = a ; // 将p指向a的首字母
    while(*p==' ')p++; // 重点:跳过字符串将的空格
    while(*p){ //当p不是结束符时,p指向的字符放到a中
       a = *p; //*p : 获取指p对应的字符
       p++; //p指针+1
       i++;  // a数组的下标+1


    }
    a = '\0'; //添加字符串结束符
}


//3.编写程序,输入三角形的3条边长,求其面积。
//注意:三角形的任意两边之和必须大于第3边,
//对于不合理的边长输入,要求给出错误提示。
// 海伦公式
//   p = (a+b+c) /2 ;
//        s = sqrt(p*(p-a)*(p-b)*(p-c));


int main(){
    float a,b,c,p,s; //
    printf("请输入三角形的三条边a、b、c\n");
    scanf("%f%f%f",&a,&b,&c);


    if(a+b>c && a+c>b && b+c>a){
        p = (a+b+c) /2 ;
        s = sqrt(p*(p-a)*(p-b)*(p-c));
        printf("三角形的面积为%.2f\n",s);
    }
    else{
        printf("a、b、c不能构成三角形\n");
    }
return 0;
}




//4. 打印直角三角形
int main(){
   int i,j; //定义变量
   for(i=1;i<=5;i++){ //打印行
    // 打印内容
    // 1. 打印空格
    for(j=1;j<=5-i;j++){
        putchar(' ');
    }
    for(j=1;j<=i;j++){
        putchar('*');
    }
    putchar('\n');
   }


   return 0;
}


//5.
//编写程序,将任意一个十进制数转换成二进制数,
//并将每位二进制数按从高位到低位的顺序存放到数组中,
//然后输出。


 int main(){
  int num,i=0,j,a[20]; // num用户输入,i索引,a数组,用于输出
  printf("请输入一个十进制数");
  scanf("%d",&num);
  while(num!=0){
 a[i++]=num%2;
 num = num /2;
  }
  for(j=i-1;j>=0;j--){
 printf("%4d",a[j]);
  }
  printf("\n");
 return 0;
 }


 
 //二、改错题
 // 6.
  int  main(){
 float r,s;
 r = 5.0;
 s = 3.14159 * r * r;
 printf(" %f\n",s);
 return 0;
 }
 //7.
 #include <stdlib.h>
#include <stdio.h>
#include <string.h>


 int  main(){
 FILE *fp;  //1. FIlE 全大写
 char str[100]; // char 小写
 int i = 0;  //小写
 if((fp=fopen("test","w"))==NULL){
        printf("can not open the file \n");
        exit(0);
 }
 printf("input a string,Please end with an exclamation point \n");
 gets(str);
 while(str!='!'){ // 修改1
        if(str>'a' && str<'z'){
            str=str-32;// 修改2
        }
        fputc(str,fp);
        i++;
 }


 fclose(fp);
 fp = fopen("test","r");
 fgets(str,strlen(str)+1,fp);
 printf("%s\n",str);
 fclose(fp);
 return 0;
 }
//三、简答题
// 8. 用宏求闰年
#define LEAP(year) ((year%4==0 && year%100!=0) ||(year%400==0))


int main(){
    int year ;
    printf("please input a year:");
    scanf("%d",&year);


     if(LEAP(year))
        printf("%d is Leap-Year.\n",year);
     else
        printf("%d is not Leap-Year.\n",year);


 return 0;
}


// 9.
#include <stdlib.h>


 int  main(){
 float score;
 printf("请输入一个百分制成绩:");
 scanf("%f",&score);
 if(score<0 || score>100){
        printf("请输入正解的成绩");
 }else{
     switch((int)(score/10))
     {
            case 10:
            case 9:
                printf("A");
                break;
            case 8:
                printf("B");
                break;
            case 7:
                printf("C");
                break;
            case 6:
                printf("D");
                break;
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
            case 0:
                printf("E");
                break;
        }
 }
 return 0;
 }
 
 // 10、
 //有一圆心在原点,半径为10的圆。编写一个程序将圆内所有的整点
 //(即点的纵横坐标都为整数的点)的坐标输出。


 // 标准答案:
 #include <stdlib.h>
#include <stdio.h>


int main(){
   int x,y,r,num=1;
   for(r=0;r<=9;r++){
    for(x=-r;x<=r;x++){
        for(y=-r;y<=r;y++){
            if(x*x+y*y==r*r){
                printf("(%2d,%2d) ",x,y);
                if(num++%8==0){
                    printf("\n");
                }
            }
        }
    }


   }
   return 0;
}


// 自己的答案


 
 // 11、
#include <stdlib.h>
#include <stdio.h>


 int  main(){
    char x[10]={'d','o','u','b','l','e','y','o','n','g'};
    int i,j;
    char *pt, temp;
    //输出最开始的值
    pt = x;
    printf("排序前:\n");
    for(i=0;i<10;i++){
        printf("%-4c",x);
    }
    // 从小到大排列
    for(i=0;i<9;i++){
        for(j=i+1;j<10;j++){


            if(pt[j]<pt){
                //交换
                temp = pt[j];
                pt[j] = pt;
                pt = temp;
            }
        }
    }


      printf("排序后:\n");
        for(i=0;i<10;i++){
        printf("%-4c",pt);
    }
      printf("\n");
 return 0;
 }
 
 
 // 12
 // 注:使用了scanf,引入stdio.h库,不然有警告
 #include <stdlib.h>
#include <stdio.h>
#define MOD(a,b) (a%b)
 int  main(){
    int n1,n2;
 printf("请输入两个整数:\n");
 scanf("%d,%d",&n1,&n2);
 printf("两个数的余数为:%d",MOD(n1,n2));
 return 0;
 }
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号