c语言基础编程题(c语言基础编程100道)

http://www.itjxue.com  2023-02-09 14:49  来源:未知  点击次数: 

C语言编程

#include stdio.h

main()

{

int x,y;

printf("please input a number?\n");

scanf("%d",x);

if (x1)

{

y=x;

}

else if (x=1x10)

{

y=2*x-1;

}

else if (x=10)

{

y=3*x-11;

}

printf("the result is %d.\n",y);

}

求解一道C语言基础编程题。。

intbase(intk,chars[])//按定义,k是进制(2~16),s是输入的字符串

{

int len=0,sum=0; //len 指s字符串长度,sum指转换后的k进制数

int i,j,t,n;

while (s[len]!='\0') len++; //计算s数组长度,也就查看用户从键盘输入了多少字符

i=len-1; //从最高位开始,也就是从最右侧开始计算,比如s=1234ab,先从b开始计算

while (s[i]!='\0') //逐个读取字符串s,第i位的具体字符值,s[i]是否有效

{

n=0; //s[i]是字符(char),s[i]转换成10进制对应的值

if (s[i]='0's[i]='9') //查ascii码表

n=s[i]-48; //48即字符 '0'

else if (s[i]='A's[i]='F') //A--F用来代表10进制下的10~15

n=10+s[i]-'A'; //s[i]是字符(char),s[i]转换成10进制对应的值

t=1;

for (j=0; jlen-i-1; j++) t=t*k;

/* //以上语句等于如下形式,s[i]对应的倍率,假设k=10,就好理解

t=1; //个位,即i=len-1时

t=1*k; //十位 即i=len-2时

t=1*k*k; //百位

t=1*k*k*k; //千位

.....

*/

sum += n*t; //合计,个+十+百+千+...

i--;

}

return (sum);

}

main()

{

int sz;

char str[20];

scanf("%d %s",sz,str);

if (sz2||sz16)

printf("输入错误。\n");

else

printf("%d\n",base(sz,str));

}

C语言编程题

int main ()

{

int student_score[20] = { 0 };

// 存取20 个学生的打分情况

int i = 0;

for(i = 0 ; i 10 ; ++i)

{

printf("第 %d 个 学生打分 \n ,输入分数: ", i );

scanf(“ %d”, student_score[i]);

}

// 求和取平均

// 排序数组 求中位数

//定义一个临时数组 int score_count[5] 用于计数 找次数最大的数就为众数

// 打印输出

}

C语言基础编程问题

C语言中规定八进制数字前面加0表示,十六进制数字前面加0x表示,不加就是十进制。

所以,题中

a=25

是十进制

b=025是八进制,换成十进制是21

c=0x25是十六进制,换成十进制是37

所以答案是

25

21

37

注:可以用windows的计算器的“科学型”来验证。

求解一道C语言基础编程题。

首先看一下程序的逻辑(虽然貌似题主应该不是在这一块有问题:

关于ascii码的解释:

首先得知道每个字符和数值的对应关系(图不清晰可看戳这里:ascii编码对应表

好了,现在看程序中的第一个if语句,在用大于、小于这些运算比较符比较char的时候,会自动转换为整数比较,也就是说‘0’会转换成48,‘1’转换成49……以此类推,最后是‘9’转换成57,你会发现把这些char减去48就会得到它们各自相对应的整数数值,这就是第一个if里面减去48的目的。同理,接下来的else-if语句,‘A’到‘F’也会转换成整数数值,具体对应的数值可以参看ascii表,一样的道理减去‘A’然后加10的目的也是转换成数值,因为在大于10的进制下,A代表10,B代表11……以此类推,因为这个程序最高就16进制了,所以判断到F就可以了。

然后我们来看进制的解释:

所谓进制,其实就是组合数字的方式,理解了这一点就很好说了。比如说10进制,为什么198等于198(好像很傻一问题)?其实是因为在十进制下,198 (10) = 1 * 10^2 + 9 * 10^1 + 8 * 10^0 = 198(好像是这么回事,(?ì _ í?)),同一个数字,放在不同的位置,它所代表的分量也不一样,即组合数字的方式会影响数字的值,1后面还有2个数字,所以这个1实际上是1 * 10^2 = 100,而不是1,其它位置的数字同理,然后把这些值加起来,就得到了整个数字所代表的最终的值,因此我们才有了 198 = 198(好像很有道理)。

但是,198也可能不等于198,什么时候不等于呢?在不同的进制下。比如说假如我们的这个198是在16进制下的198,那么 198 (16) = 1 * 16^2 + 9 * 16^1 + 8 * 16^0 = 408 (10) = 408。

为什么会产生这种差别呢?因为16进制下的那个1代表的分量是1 * 16^2了,而不是1 * 10^2了,同理,在其它进制下只需要把乘的数字换成对应的进制的数就好了,比如在9进制下那个1就是1 * 9^2等等。

这样一来上面程序里面的for语句就好理解了,之所以用for是因为要算出次方(这个应该不用解释),一个数要乘的次方是它后面跟着的数字的个数,所以是“j = 0; j len - 1”。

然后把这些值加起来,就得到这个数字对应的十进制下的数值,也就完成了最终的转换。

题主可以随便写些不同进制下的数字,然后自己算出十进制下对应的数值,和网站上得出的结果比较比较,这样也可以加深对进制的理解,同时提高计算能力。

戳这里:在线进制转换

这里给出了一个链接,这种网页到处都是,随便搜一下就可以找到。

基础编程题

LZ想要的是这种答案吧。。。。

//-------------------------------第一题

#include stdio.h

#include "e:\myc\zylib\zylib.h"

STRING GetString(STRING prompt);

double GetReal(STRING prompt);

int main()

{

double bookprice;

STRING bookname;

bookname=GetString("请输入字符串:");

bookprice=GetReal("请输入实数:");

printf("字符串为:%s\n",bookname);

printf("实数为:%.2f\n",bookprice);

}

STRING GetString(STRING prompt)

{

STRING name;

printf("%s",prompt);

name=GetStringFromKeyboard();

return name;

}

double GetReal(STRING prompt)

{

double price;

printf("%s",prompt);

price=GetRealFromKeyboard();

return price;

}

//-------------------------------------第二题

#include stdio.h

#include "e:\myc\zylib\zylib.h"

BOOL IsPrime(int n);

int main()

{

int n;

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

scanf("%d",n);

if(n2)

if(IsPrime(n))printf("%d是素数\n",n);

else printf("%d不是素数\n",n);

else printf("数据非法\n");

return 0;

}

BOOL IsPrime(int n)

{

int i;

for(i=2;in;i++)

if(n%i= =0) return FALSE;

return TRUE;

}

//--------------------------------第三题

#include stdio.h

#define TRUE 1

int gcd(int x,int y);

int main()

{

int m,n,max;

printf("请输入两个正整数:");

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

max=gcd(m,n);

printf("最大公约数为:%d\n",max);

return 0;

}

int gcd(int x,int y)

{

int r;

while(TRUE)

{

r=x%y;

if(r==0)break;

x=y;

y=r;

}

return y;

}

//--------------------------------第四题

#include stdio.h

#include "e:\myc\zylib\zylib.h"

typedef enum{sun,mon,tue,thi,wen,fri,sat}WEEKDAY;//定义枚举类型

int GetInteger(STRING prompt);//输入一下整数

int Count(int year,int month);//计算某年某月之前到2007年1月1日的天数

BOOL IsLeapYear(int n);//判断某年是否是闰年

int month_day(int year,int month);//计算某个月的天数

void print(int year,int month,int total);//打印某年某月的日历

void print1(WEEKDAY weekday);//打印某月的第1天

int main()

{

int year,month,total;

year=GetInteger("please input year:");

if(year2007)

PrintErrorMessage(FALSE,"年份小于2007,错误\n");

month=GetInteger("please input month:");

total=Count(year,month);

print(year,month,total);

}

int GetInteger(STRING prompt)

{

int t;

printf("%s",prompt);

t=GetIntegerFromKeyboard();

return t;

}

int Count(int year,int month)

{

int s,i;

s=0;

for(i=2007;iyear;i++)

if(IsLeapYear(i))s+=366;

else s+=365;

for(i=1;imonth;i++)

s+=month_day(year,i);

return s;

}

BOOL IsLeapYear(int n)

{

return n%4==0n%100!=0||n%400==0;

}

int month_day(int year,int month)

{

int day;

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 9:

case 10:

case 12:day=31;break;

case 2:day=28+IsLeapYear(year);break;

default:day=30;

}

return day;

}

void print(int year,int month,int total)

{

WEEKDAY weekday;

const WEEKDAY first=mon;

int i,day;

printf("%d-%d canlendar\n",year,month);

printf("-----------------------------------\n");

printf(" sun mon tue thi wen fri sat\n");

printf("-----------------------------------\n");

day=month_day(year,month);

for(i=1;i=day;i++)

{

weekday=(WEEKDAY)((total+i+first-1)%7);

if(i==1)print1(weekday);

else if(weekday==sat)

printf("%4d\n",i);

else printf("%4d",i);

}

printf("\n------------------------------------\n");

}

void print1(WEEKDAY weekday)

{

if(weekday==0)printf("%4d",1);

else if(weekday==1)printf("%8d",1);

else if(weekday==2)printf("%12d",1);

else if(weekday==3)printf("%16d",1);

else if(weekday==4)printf("%20d",1);

else if(weekday==5)printf("%24d",1);

else if(weekday==6)printf("%28d\n",1);

}

//---------------------------------------

上面的一些文件路径你自己改了,唉,其实我自己给你写的那些算法更好,。

(责任编辑:IT教学网)

更多

推荐Flash实例教程文章