C语言入门程序

C语言入门程序,第1张

1、

#include <stdio.h>

void main( )

{

int i, n

float a[10]

float sum=0

printf("请输入一个整数n:\n")

scanf("%d",&n)

printf("请输入%d个整数:\n",n)

for(i=0i<ni++)

{

scanf("%f",&a[i])

sum+=a[i]

}

printf("平均值是:%g\磨顷亩n",sum/n)

}

2、

#include <stdio.h>

void main( )

{

int i, n

float a[10]

printf("请输入一个整数n:\n")

scanf("%d"瞎森,&n)

printf("请乎此输入%d个整数:\n",n)

for(i=0i<ni++)

{

scanf("%f",&a[i])

}

printf("逆序输出:\n")

for(i=n-1i>=0i--)

{

printf("%g ",a[i])

}

}

补充:郑腊敬看来有人不明白,得先建题库文件啊,然后才能输入文件路径捆绑题库,比如我上面的演示中,c:\qs01.txt,你首先要先在c盘创建一个txt文件,然后在里面打字“题目 空格 答案 回车”这样输入。有了库文件程序才能读啊

比如:(你如果自己能修喊慎改我常量里的字符长度,不光数学,语文,英语题库都可以)

在txt文本里保存题库,比如幼儿题目放一个txt,小学题目放一个txt。

程序分两大部分:

1、根据【题库数常量】,提示输入每个题库的类别名称、每个题库文件的路径,生成菜单。

2、用户通过菜单选择,题库类别,输入随机数上限。

3、根据用户输入数字随机抽取一组问题,提问回答并统计正确率。

注意:这里我测试,【题库数常量】qssSize我值设置了2,如想增加题库类别,只要修改该数值即可!。(其他常量我也备注了,有需要自己改)

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

#define qsLen 100//问题最大长度

#define ansLen 50//答案最大长度

#define qssSize 2//题库种类数量  我测试只定义了 小学和幼儿 两个问题库,需要自己添加

#define qssNameSize 10//题库名称长度

#define qssPathSize 100//题库路径长度

typedef struct qs

{

    int id//问题编号

    int cont//题库问题数量,只有头结点存储该值

    char qs[qsLen]//问题

    char ans[ansLen]//答案

    struct qs *next

}QS

void newQss(char qssName[][qssNameSize],char qssPath[][qssPathSize])//根据输入,新建问题分类信息

int showMenu(char qssName[][qssNameSize])//显示题库菜单,返回用户选择的题库类别下标

QS *readFile(char *filePath)//读取问题库文件,生成链表,返回头节点

QS *randQs(QS *qsHead,int qsNum)//从题库随机抽取题目,参数:题库头节点、题库总题目数。返回:抽取的题目节点

int main()

{

    int lbNum,qsNum,cnt,i,correct,error

  局敏  char question[qsLen],answer[ansLen],input[ansLen]

    char qssName[qssSize][qssNameSize],qssPath[qssSize][qssPathSize]//qssName: 题库分类名称;qssPath:题库文件路径

    QS *qsHead=NULL,*qsSelect

    srand(time(NULL))

    newQss(qssName,qssPath)

    lbNum=showMenu(qssName)

    printf("\n--开始加载题库--\n")

    qsHead=readFile(qssPath[lbNum])

    qsNum=qsHead->cont

    printf("题库共%d条题目,请输入需要提取的题目数量:",qsNum)

    while(1)

    {

        scanf("%d",&cnt)

        if(cnt>0 && cnt<=qsNum)

            break

    }

    printf("\n--开始从题库中随机抽取%d条问题--\n",cnt)

    correct=0

    error=0

    for(i=0i<cnti++)

    {

        qsSelect=randQs(qsHead,qsNum)

        if(qsSelect!=NULL)

        {

            strcpy(question,qsSelect->qs)

            strcpy(answer,qsSelect->ans)

            printf("第%d题、%s ? 答案:",i+1,question)

            scanf("%s",input)

            if(!strcmp(answer,input))

            {

                printf("回答正确!\n\n")

                correct++

            }

            else

            {

                printf("回答错误!正确答案是%s\n\n",answer)

                error++

            }

        }

    }

    printf("共%d条问题,正确回答%d条,正确率%d%%\n",cnt,correct,correct*100/cnt)

    return 0

}

QS *randQs(QS *qsHead,int qsNum)

{

    int n

    n=rand()%qsNum+1

    while(qsHead->next!=NULL)

    {

        if(qsHead->next->id==n)

            return qsHead->next

        qsHead=qsHead->next

    }

    return NULL

}

void newQss(char qssName[][qssNameSize],char qssPath[][qssPathSize])

{

    int i

    printf("--开始录入题库分类信息--\n")

    for(i=0i<qssSizei++)

    {

        printf("\n请输入题库1的名称及题库文件路径\n名称(不超%d个字符):",qssNameSize)

        scanf("%s",qssName[i])

        printf("路径(不超%d个字符):",qssPathSize)

        scanf("%s",qssPath[i])

    }

}

int showMenu(char qssName[][qssNameSize])

{

    int i

    printf("\n当前题库分类为:\n")

    for(i=0i<qssSizei++)

        printf("%d、 %s\n",i+1,qssName[i])

    printf("请选择你要提取的题库类别(输入数字):")

    scanf("%d",&i)

    return i-1

}

QS *readFile(char *filePath)

{

    FILE *fp

    char qsSave[qsLen],ansSave[ansLen]

    QS *qsHead=NULL,*qsTail=NULL

    if((fp=fopen(filePath,"rt+"))==NULL)

    {

        printf("Cannot open file strike any key exit!")

        return NULL

    }

    qsHead=(QS *)malloc(sizeof(QS))

    qsHead->next=NULL

    qsHead->cont=0

    while(fscanf(fp,"%s %s",qsSave,ansSave)!=-1)

    {

        qsHead->cont++

        QS *qsNew=(QS *)malloc(sizeof(QS))

        qsNew->next=NULL

        qsNew->id=qsHead->cont

        strcpy(qsNew->qs,qsSave)

        strcpy(qsNew->ans,ansSave)

        if(qsHead->next==NULL)

            qsHead->next=qsNew

        else

            qsTail->next=qsNew

        qsTail=qsNew

    }

    return qsHead

}

1.输入掘慎2个正整数m和n,求其最大公约数和最小公倍数

#include

#include

int main()

{

int m,n,p,q,s,r

printf("请输入两个正整数;m,n\n")

scanf("%d,%d",&m,&n)

s=m*n

if(m<n)

{

p=m

m=n

n=p

}

printf("%d\t%d\n",m,n)/*按从大到小输出m,n */

while(n!=0)

{

q=m%n

m=n

n=q

}

/*是不是m才是最大公约数啊*/

r=s/m

printf("m和n最大公约数为 %d\n",m)

printf("m和n最小公倍数为 %d\n",r)/*m和n的积除以m和n的最大公约数即为最小公倍数*/

return 0

}

2.输出100以内能被3整除且个位数为6的所有整数。

#include

int main(void)

{

int i

for(i=1i<=100i++)

if(i%3==0&&i%10==6)printf("%d ",i)

return 0

}

3. 编程计算从1到10各数阶乘的和,即1! + 2! + 3! + …… + 9! + 10! 的和

#include

int main(void)

{

int sum,i,term

sum=0

term=1

for(i=1i<=10i++)

{

term=term*i

sum=sum+term

printf("%d的阶乘 %d\n",i,term)

}

printf("1到10各数阶乘的和 %d\n",sum)

return 0

}

4.使用嵌套循环产生下列由大写字母组成的图

#include

int main(void)

{

char ch1,ch2

for(ch1='A'ch1<='Z'ch1++)

{

for(ch2='A'ch2<=ch1ch2++)

printf("%c",ch2)

printf("\n")

}

return 0

}

5. 编程输出所有三位数中的素数。

#include

int main(void)

{

int x,i

for(x=100x<=999x++)

{

for(i=2i<x/2i++)

if(x%i==0)break

if(i==x/2)printf("%d ",x)

}

return 0

}

6. 定义一个函数even(),判断一个整数是否是偶数。如果是偶数返回1,否则返回0。(要求包括能使程序正常运行的主函数)

#include

int main(void)

{

int even(int)

int x,y

scanf("%d",&x)

y=even(x)

if(y==1)

printf("%d 是偶数\n",x)

else

printf("%d 是奇数\n",x)

return 0

}

int even(int x)

{

if(x%2==0)

return 1

else

return 0

}

7. 编写函数mypow,求整型变量x的y次方。(要求包括能使程序正常运行的主函数)

#include

int main(void)

{

int mypow(int,int)

int x,y,s

scanf("%d%d",&x,&y)

s=mypow(x,y)

printf("%d的%d次方是 %d\n",x,y,s)

return 0

}

int mypow(int x,int y)

{

int sum,i

sum=1

for(i=1i<=yi++)

sum=sum*x

return sum

}

8.输入一个3位整数,输出它的逆序数。例如,输入127,输出应该是721。

#include

int main(void)

{

int x,y

scanf("%d",&x)

y=x/100+x/10%10*10+x%10*100

printf("%d的逆序数 %d\n",x,y)

return 0

}

9. 编写一个字符串连接函数,其功能是将两个字符串连接判陆敬起来形成一个新的字符串,以实现库函数strcat()的功能

#include

int main(void)

{

void mystrcat(char s1[],char s2[])

char s1[80],s2[80]

scanf("%s%s",s1,s2)

mystrcat(s1,s2)

printf("%s\悉运n",s1)

return 0

}

void mystrcat(char s1[],char s2[])

{

int i,j

for(i=0s1[i]!='\0'i++)

for(j=0s2[j-1]!='\0'j++)s1[i+j]=s2[j]

}

10. 编写一个字符串复制函数,其功能是将字符数组s2中的全部字符(包括字符串结束符号'\0')拷贝到字符数组 s1 中,以实现库函数strcpy()的功能。

#include

int main(void)

{

void mystrcpy(char s1[],char s2[])

char s1[80],s2[80]

scanf("%s",s2)

mystrcpy(s1,s2)

printf("%s\n",s1)

return 0

}

void mystrcpy(char s1[],char s2[])

{

int i

for(i=0s2[i-1]!='\0'i++)

s1[i]=s2[i]

}

11.有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串

#include

int main(void)

{

void mystrcpy2(char s1[],char s2[],int m,int n)

char s1[80],s2[80]

int m,n

scanf("%d%d",&m,&n)

scanf("%s",s1)

mystrcpy2(s1,s2,m,n)

printf("s1: %s\ns2: %s\n",s1,s2)

return 0

}

void mystrcpy2(char s1[],char s2[],int m,int n)

{

int i,j

for(i=m-1,j=0i<n&&s1[i]!='\0'i++)

s2[j++]=s1[i]

s2[j]='\0'

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12561857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存