求解一道C语言基础题

作者&投稿:郯雄 (若有异议请与网页底部的电邮联系)
求解一道C语言基础题。~


#include
double func(double a[],double b[],int n)
{
double sum;
int i;
for(sum=0,i=0;i<n;++i)
sum+=(a[i]-b[i])*(a[i]-b[i]);
return sqrt(sum);
}

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; j<len-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 (sz16)

printf("输入错误。
");

else

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

}

因为读到文本末尾会存放一个字符EOF,注意这个东西ch != EOF,他是限制循环的,一旦文本中的浮动指针指向了文本末尾,ch != EOF条件就不满住了,循环就会跳出。
这个是个复制文件功能的函数吧!

这语句的功能就是从指定的文件中读取一个字符,他出现在什么位置,这并不重要。这个语句完全可以把它下移到循环体的末尾,作为循环体内部的一个最后一个语句。效果是完全一样的。

读取一个字节后,光标位置即文件流指针会自动后移一个字节。
如果txt里面的内容是abc。
那printf("%c",fgetc(fp1));
printf("%c",fgetc(fp1));
printf("%c",fgetc(fp1));
执行三次后就分别输出abc

for循环中之所以能够这样使用fgetc,是因为当到达文件末尾时,fgetc会返回EOF。


一道c语言的计算题。求细致一点的讲解~~~追加!!
这是一道比较基础的 C 语言计算题目,可以通过输入两个整数,然后使用加、减、乘、除等运算符进行计算,最后输出结果。下面是一份示例代码,给你参考:include <stdio.h> int main() {int x, y;printf("请输入两个整数:\\n");scanf("%d %d", &x, &y);int sum = x + y;int difference...

C语言小白求解一道题。
include <stdlib.h> int main(){ unsigned short num;unsigned short reverse=0;printf("input a num\\r\\n");while(1){ scanf("%d", &num);if(num > 9999 || num < 1000)printf("输入四位数\\r\\n");else break;} if((num \/10) % 2){ printf("是奇数num = %d", num);return ...

一道C语言的基础问题求详解
a>100时,a>100为真,值为1;a<=100时,a<=100为真,值为1,printf里的看他真假,真为1,假为0

c语言题解释
第一道题:第一行,是你定义下面程序多要用到的变量,int是整型,也就是说只能是整数,比如2;float类型,就是小数,比如2.3等,下面的scanf是让你输入数值的意思,括号后面有三个字母变量,也就是说你要输入三个数字,分别赋给a,b,c;printf是输出你刚才的数值。解答完毕。第二道题意思差不多...

一道c语言题,求解答,急!
x+=x-=x*x;等同于 x+=(x-=x*x);等同于 x+=(x-=36);等同于 x+=(x=x-36);等同于 x+=(x=-30);等同于 x+=(-30);等同于 x=x-30;x=-30-30=-60;答案是B。

请问关于C语言的一道题
6, 7,8,9};初始化使 a[0][0]=1,a[0][1]=2,a[0][2]=3; a[1][0]=4,a[1][1]=5,a[1][2]=6;a[2][0]=7,a[2][1]=8,a[2][2]=9;循环语句:i=0; s=0+a[0][2]= 3;i=1; s=3+a[1][1]= 3+5=8 i=2; s=8+a[2][0]= 8+7=15 答 15 ...

求解一道比较简单的C语言题目
int i=16,j,x=6,y,z;j=i+++1; \/\/相当于 (i++) + 1,由于i++当句i不变,还是等于i+1 = 17 printf("1:%d\\n",j); \/\/上句执行完,i的值加1那个操作就生效了,i成了17 x*=i=j; \/\/i和j都为17 乘以x结果为102付给x,所以x为102 printf("2:%d\\n",x);x=1;y=2;...

一道C语言题,高手分析
答案是7,9,7 应该是2个等号(--y == x++),先做个简单说明 y = x++; 等价于:y = x; x = x + 1;y = ++x; 等价于:y = x + 1; x = x + 1;这个明白的话就简单了 在(--y == x++)判断左右是否相等的时候,x仍是以前的x=5,随后x = x+1变成6;不过y的值是...

求解一道C语言基础编程题。
首先看一下程序的逻辑(虽然貌似题主应该不是在这一块有问题:关于ascii码的解释:首先得知道每个字符和数值的对应关系(图不清晰可看戳这里:ascii编码对应表 好了,现在看程序中的第一个if语句,在用大于、小于这些运算比较符比较char的时候,会自动转换为整数比较,也就是说‘0’会转换成48,‘1’...

C语言的一道题。 这题怎么做?完全不会
输入exam 123,因此argc是=2。123的长度为3,i是static类型,循环三次,n为fun最后一次返回的结果,即n=3。最后3*2=6,选A。

崇义县18520971209: 一道C语言的逻辑运算问题 很基础的 求解答16.下面程序的输出结果是 A . main() {int x,y,z; x=y=1; z=x++ - 1; printf(“%d,%d\t”,x,z); z+= - x+++(++y||++z); printf(... -
顾娟安易:[答案] ++y等于2,++z等于1,“或”的结果为1.-x++=-2,所以z=-1. 对于数字,“非零”即为真 所以4||5=1,3&&2=1

崇义县18520971209: 求解一道c语言题目,输入10个整数,求奇数之和,以及偶数之和 -
顾娟安易:[答案] #include int main() { int s1=0,s2=0,i,a[10]; for(i=0;i

崇义县18520971209: 求解一道C语言基础编程题. -
顾娟安易: #include <stdio.h> void GetNums(const int n[3], int res[3]) { if (NULL == n || NULL == res) { return; } memmove(res, n, sizeof(int) * 3);#define BACK_MOVE(src, dst) (src) += (dst >>= 1); BACK_MOVE(res[2], res[0]); BACK_MOVE(res[1], res[2]); ...

崇义县18520971209: 5道c语言 基础题目 求解 -
顾娟安易: 16.计算存放在数组score中12位学生成绩的平均分,并输出高于平均分的人数.#include <stdio.h> void main() { int score[N]={67,78,66,79,73,82,69,85,77,80,93,72}; int i; float s = 0; for(i = 0; i < N; i++) { s += score[i]; } s = s/N; int n = 0; for(i = 0; i < N;...

崇义县18520971209: 200分求解c语言入门题 -
顾娟安易: 1、#include main() { int m,n,max,min,k; printf("输入两个正整数:"); scanf("%d%d",&m,&n); max=m>n?m:n; min=mwhile(true) { k=(max%min); if(k==0) { break; } max=min; min=k; } printf("最大公约数:%d\n",min); printf("最小公...

崇义县18520971209: 求解一道简单的C语言C程序C编程题 -
顾娟安易: 题目没说清.1.输入仅限于小写字母还是所有字符;2 y,z输出a,b还是也按ASCII码向后推两位.#include <stdio.h>#include <string.h> int main() { char iword; char oword; while(iword = getchar()) { if(iword == '\n') break; oword = (iword - 95) % 26 + 97; printf("%c",oword); } printf("\n"); return 0; } 输入:abcdefxyz 输出:cdefghzab 此程序仅限输入小写字母.

崇义县18520971209: C语言 基础编程求解题!
顾娟安易: 先乘除,后加减.括号优先. 先(int)(x+y),x+y=7.2,int(7.2)=7; 然后7%2=1; 再然后1/4=0,注意1,4都是整数,因此做整数除法,结果只保留整数商. 然后x+0=x=2.5

崇义县18520971209: c语言一道题求解 -
顾娟安易: 因为在point函数中,p这个指针指向的内容是可被修改的,而p指针本身的值(指向b数组的开始地址)不能被修改.用 point(char **p) 即可.

崇义县18520971209: 一道简单的c语言题目求解 -
顾娟安易: #include <stdio.h> int main() { char c[5]; printf("输入4位数\n"); scanf("%s",c); for(int i=0;i<4;i++) printf("%c ",c[i]); scanf("%s",c); return 0; }

崇义县18520971209: C语言基础题,求解! -
顾娟安易: if(i+j!=n&&i!=n-1&&i!=n-1)//这里好像不对,搞不懂副对角线怎么表示 改为 if(i != n -1 || j != n-1 || i != j) // i=j为副对角线上的点

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网