重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include stdio.h
成都创新互联专业为企业提供定结网站建设、定结做网站、定结网站设计、定结网站制作等企业网站建设、网页设计与制作、定结企业网站模板建站服务,十余年定结做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
int fib(int n)
{
if(n==1||n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
int main(void)
{
int m,n;
printf("plz input m,n\n");
scanf("%d%d",m,n);
while(m1||n10000)
{
printf("input again\n");
scanf("%d%d",m,n);
}
int i=1;
while(fib(i)=n)
{
if(fib(i)=m)
printf("%d\t",fib(i));
i++;
}
return 0;
}
自己刚写的,匆忙,没过多考虑复杂度,但功能完全正确,已调试通过!
呵呵,希望楼主赏点分吧
虽然我不太懂指针,但都看懂了
函数ss(char *s)的作用是求字符串s的长度
char *p=s;//将字符串s的首地址赋给指针p
while(*p)p++;//当p指向的地址未结束时,p指向下一个地址,当循环结束时,p指向的是字符串s的末地址加1
return(p-s);//返回末地址减去首地址的值,就是返回字符串s的长度
所以整个程序就是输出字符串s的长度
#include stdio.h
void judge(char *p) {
int i = 0;
for (i = 0; i = 2; i++) {
if (65 = *p *p = 90 || 97 = *p *p = 122) {
printf("alpha\n");
}
else if (48 = *p *p = 57) {
printf("numeric\n");
}
else {
printf("other\n");
}
p++;
}
}
int main()
{
char arr[3] = {0};
int i = 0;
printf("请输入一组数据(3个字符,以换行为开始):\n");
for (i = 0; i =2; i++) {
scanf("%c", arr[i]);
getchar();
}
judge(arr);
return 0;
}
#include stdio.h
#define STUDENTNUM 10
/* 由于学号只有9个数字,一个long型的整数就可以表示 */
/* 成绩只是0~100之间,一个char就可以表示了 */
struct student
{
long xh;
char dxyy;
char cyycxsj;
char jsjdl;
} students[STUDENTNUM];
int ResearchStu(long xh);
/* 从文件读取学生成绩,如果文件不存在,需要手工输入成绩 */
/* 成绩数值必须在0~100之间。*/
void init()
{
int i, tmp, err;
FILE * fp = fopen("cj.dat", "rb");
if(fp) fread(students, STUDENTNUM, sizeof(struct student), fp);
else
{
for(i=0; iSTUDENTNUM; i++)
{
err = 0;
printf("请输入学号:");
scanf("%ld", students[i].xh);
printf("请输入大学英语成绩:");
scanf("%d", tmp);
if(0 = tmp tmp = 100) students[i].dxyy = (char)tmp;
else err = 1;
printf("请输入C语言程序设计成绩:");
scanf("%d", tmp);
if(0 = tmp tmp = 100) students[i].cyycxsj = (char)tmp;
else err = 1;
printf("请输入计算机导论成绩:");
scanf("%d", tmp);
if(0 = tmp tmp = 100) students[i].cyycxsj = (char)tmp;
else err = 1;
if(err)
{
printf("成绩输入错误,需要重新输入!\n");
i--;
}
}
}
}
void main()
{
long xh, pos;
init();
scanf("%ld", xh);
pos = ResearchStu(xh);
if(pos == -1) printf("查无此人!");
else
{
printf("%d\t大学英语\t%d分\n", students[pos].xh, students[pos].dxyy);
printf("%d\tC语言程序设计\t%d分\n", students[pos].xh, students[pos].cyycxsj);
printf("%d\t计算机导论\t%d分\n", students[pos].xh, students[pos].jsjdl);
}
}
int ResearchStu(long xh)
{
int i;
for(i=0; iSTUDENTNUM; i++) if(students[i].xh == xh) return i;
return -1;
}
A是先取函数f返回的内存单元(参数是i即i的地址)中存储的值,并作更改(改为6)
B项 i+6 是算术表达式,不能直接取地址,必须使用变量保存才能取地址
C项 是定义一个指向整型的指针p,并赋值为函数f的返回值(该函数返回一个指针,也就是内存地址)
D项 直接以i为参数执行函数f,返回值不起任何作用
函数说明中需要提供两个指针做为参数
变量x和y的地址(指针)的求法就是在变量名前面加运算符号得到
*x和*y是将变量x和y中存放的数当成地址(指针)来取得指向单元的数值,这个与题目不符,另外由于x和y并不是指针变量,*x和*y的使用无法通过编译