C语言经典题集合(三)

25.static定义静态变量的用法 (观察即可)

本题以看和了解为主
在定义变量的时候,在数据类型名之前添加static关键字,定义的变量就是静态变量。那么,可以包括“静态局部变量”和“静态全局变量”。

#include <stdio.h>
void varfunc()
{
   
    int var = 0;
    static int static_var = 0;
    printf("\40:var equal %d \n", var);
    printf("\40:static var equal %d \n", static_var);
    printf("\n");
    var++;
    static_var++;
}
void main()
{
   
    int i;
    for (i = 0; i < 3; i++)
        varfunc();

    return;
}

输出结果:在这里插入图片描述

26.学习使用auto定义变量的用法(观察即可)

auto函数:

#include <stdio.h>
int main()
{
   
    int i, num;
    num = 2;
    for (i = 0; i < 3; i++)
    {
   
        printf("\40: The num equal %d \n", num);
        num++;
        {
   
            auto  num = 1;
            printf("\40: The internal block num equal %d \n", num);
            num++;
        }
    }

    return 0;

}

运行结果在这里插入图片描述

27.小球下落问题

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

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

int main()
{
   
    float high = 100;  //总高度
    float s, h;    //h代表当前高度,s代表总长度

    h = high * pow(0.5, 10); //0.5是这个里面的规律,一半,10代表十次
    s = 2 * (50 - h * 0.5 * 2) / (1 - 0.5) + 100;
    printf("第十次的高度为%f;总路程为%f", h, s);

    return 0;
}

28.找出1000以内所有完数

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。

#include<stdio.h>//头文件 
int main()//主函数 
{
   
  int number,s,i;//定义变量 
  for(number=2;number<1000;number++)//for循环 
  {
   
    //直接从2开始
    s=0;
    for(i=1;i<number;i++)
    {
   
      //检查i是否是m的因子 
      if((number%i)==0)
      {
    
      //如果是的话 
        s=s+i;
      } 
      }
    if(s==number)
    {
   
      printf("%d的因子为:",number);
      for(i=1;i<number;i++)
      {
    
        if(number%i==0)
        {
    
          //判断是否是因子,是的话就输出 
          printf("%d ",i);
        }
      } 
        printf("\n");//换行 
      }
    }
  return 0;//主函数返回值为0 
}

29.猜数字

#include "time.h"
#include "stdlib.h"
#include "stdio.h"
main()
{
   char c;
clock_t start,end;
time_t a,b;
double var;
int i,guess;
srand(time(NULL));
printf("do you want to play it.('y' or 'n') \n");
loop:
while((c=getchar())=='y')
{
   
i=rand()%100;
printf("\nplease input number you guess:\n");
start=clock();
a=time(NULL);
scanf("%d",&guess);
while(guess!=i)
{
   if(guess>i)
{
   printf("please input a little smaller.\n");
scanf("%d",&guess);}
else
{
   printf("please input a little bigger.\n");
scanf("%d",&guess);}
}
end=clock();
b=time(NULL);
printf("\1: It took you %6.3f seconds\n",var=(double)(end-start)/18.2);
printf("\1: it took you %6.3f seconds\n\n",difftime(b,a));
if(var<15)
printf("\1\1 You are very clever! \1\1\n\n");
else if(var<25)
printf("\1\1 you are normal! \1\1\n\n");
else
printf("\1\1 you are stupid! \1\1\n\n");
printf("\1\1 Congradulations \1\1\n\n");
printf("The number you guess is %d",i);
}
printf("\ndo you want to try it again?(\"yy\".or.\"n\")\n");
if((c=getch())=='y')
goto loop;
}

30.(第一个项目)通讯录设计

``坦白的说自己做的不太好(因为对于指针一类熟悉度不高),这里从网上引用了一个别人的,自己修改了一下。里面设计很多指针的应用,谢谢这位作者的代码。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
typedef struct student     //定义结构体
{
   
    char name[20];    //姓名
    char num[15];      //学号
    char sex[10];     //性别
    char from[20];    //籍贯
    char political[10];    //政治面貌
    char phone[15];      //手机号
    char QQ[15];         //QQ号
    char dorm[10];     //宿舍
    struct student* next;  //结构体指针
}stu;
stu* head;

void print()    //主菜单
{
   
    system("cls");
    printf("\n\n\n");
    printf("      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
    printf("      ***********************************************************\n");
    printf("      \t\t\t班级通讯录管理系统\n");
    printf("\n");
    printf("      \t\t1. 输入数据");
    printf("\t\t2. 显示数据\n");
    printf("      \t\t3. 插入数据");
    printf("\t\t4. 删除数据\n");
    printf("      \t\t5. 查看数据");
    printf("\t\t6. 修改数据\n");
    printf("      \t\t7. 保存数据");
    printf("\t\t8. 返回主菜单\n");
    printf("      ***********************************************************\n");
    printf("      ~~~~~退~~~~~~~~~~出~~~~~~~~~~请~~~~~~~~~~按~~~~~~~~~~9~~~~~\n"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值