第1个回答 2011-04-02
第一个问题:
#include <stdio.h>
void main()
{
int j,a[12],*p;
p=a;
for(j=0;j<12;j++)
scanf("%d",p++);
p=a;//重置p,因为p已经指向了a数组的末尾
for(j=0;j<12;j++)
{
printf("%d ",*p++);
if(j%4 == 3)
printf("\n");
}
}
第二个问题:加入#include <string.h>。 void copystr(char*,char*,int);这句话改成 void copystr(char*str1,char*str2,int m);并放在main函数的上边,里边的那句去掉(不可以在里边声明)。另外,字符串要初始化,这是关键。子函数的形式:
#include <stdio.h>
#include <string.h>
void copystr(char* str1,char* str2,unsigned int m);
void main()
{
unsigned int m;
char str1[20]="",str2[20]="";
printf("input string:");
gets(str1);
fflush(NULL);
printf("which character that begin to copy?");
scanf("%d",&m);
if(strlen(str1) <= m)
printf("input error!");
else
{
copystr(str1,str2,m);
printf("result:%s\n",str2);
}
}
void copystr(char* str1,char* str2,unsigned int m)
{
unsigned int i;
for (i=m-1;i<strlen(str1);i++)
{
str2[i-m+1] = str1[i];
}
}
第三个问题:
#include <stdio.h>
void main()
{
int a;
printf("Please input a number:\n");
scanf("%d",&a);
switch(a)
{
case 1:
printf("%s","Monday");
break;
case 2:
printf("%s","Tuesday");
break;
case 3:
printf("%s","Wednesday");
break;
case 4:
printf("%s","Thursday");
break;
case 5:
printf("%s","Friday");
break;
case 6:
printf("%s","Saturday");
break;
case 7:
printf("%s","Sunday");
break;
}
printf("\n");
}
第四个问题:
#include <stdio.h>
#define MAXN 3
int s[MAXN][6]={{1001,70,80,96,70,90},
{1002,40,80,50,60,80},
{1003,50,70,40,50,75}};
void search(int (*p)[6],int m,int no)
{
int i = 0,j=0;
for (i=0;i<m;i++)
{
if (no==p[i][0])
{
for (j=1;j<6;j++)
printf("%d ",p[i][j]);
}
}
printf("\n");
}
void main()
{
int num;
printf("Enter the number of student:\n");
scanf("%d",&num);
search(s,MAXN,num);
}
第五个问题:很显然你传值是不能改变形参的,另外,int a,b,c,void (*p)();这句话语法错误,int void两个返回类型?
如果你使用vc可以尝试用引用传递swap函数的ab以及sum的c,例如:void sum(int a,int b,int &c)
示例代码:
#include <stdio.h>
void sum(int a,int b,int &c);
void swap(int &a,int &b);
void (*p)(int &a, int &b);
void (*q)(int b, int a,int &c);
void main()
{
int a,b,c;
printf("Enter a and b:");
scanf("%d,%d",&a,&b);
p=swap;
(*p)(a,b);
printf("a=%d,b=%d\n",a,b);
q=sum;
(*q)(a,b,c);
printf("sum=%d\n",c);
}
void sum(int a,int b,int &c)
{
c=a+b;
}
void swap(int &a,int &b)
{ int t;
t=a;
a=b;
b=t;
}
所有问题均已解决,调试通过。希望楼主采纳
第2个回答 2011-04-01
先上第一题: 已调试通过。
int main(void) {
int j,a[12] = {0},*p = 0;
p = a;
for(j=0;j<12;j++)
scanf("%d",p++);
p = a; // 将指针指向a的头部
for(j=0;j<12;j++)
{
printf("%2d ",*p++);
if((j+1)%4 == 0)
printf("\n");
}
return 0;
}
第二题:
void copystr(char*p1,char*p2,int m)
{
char *tmp = p1+m;
while (*tmp != 0)
{
*p2++ = *tmp++;
}
}
第三题:
int main(void) {
char week[7][10] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
int index = 0;
printf("Please input a integer(1~7):\n");
scanf("%d",&index);
if (index >= 1 && index <= 7)
printf("The date is: %s\n", *(week+index-1));
return 0;
}
第四题:
void search(int (*p)[6],int m,int no)
{
int i=0;
while (i<m)
{
if (**p == no) break; //找到学号
p++;
i++;
}
if (i >= m)
{
printf("Can't find the student's info.\n");
return;
}
printf("the scores of the student are: \n");
for (int j=1; j<=5; j++) //j=1,从第二个开始,第一个是学号
{
printf("%d,", *(*(p)+j)); //打印成绩
}
printf("\n");
}
第五题:
void sum(int a, int b, int *c)
{
*c=a+b;
}
void swap(int *a, int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
int main()
{
int a,b,c;
void (*p1)(int *a, int *b);
void (*p2)(int a, int b, int *c);
printf("Enter a and b:\n");
scanf("%d,%d",&a,&b);
p1=swap;
p1(&a, &b);
printf("a=%d,b=%d\n",a,b);
p2=sum;
p2(a, b, &c);
printf("sum=%d\n",c);
return 0;
}
第3个回答 2011-04-01
stdio.h>
#include<math.h>
bool is_triangle(double a,double b,double c) {
if(a+b<=c || a+c<=b || b+c<=a)
return false;
return true;
}
double SABC(double a,double b,double c) {
double p;
p=(a+b+c)/2.0;
return sqrt(p*(p-a)*(p-b)*(p-c)); //海伦公式
}
int main() {
double a,b,c;
while(1) {
printf("输入三角形的三条边(以0 0 0结束):\n");
scanf("%lf%lf%lf",&a,&b,&c);
if(a+b+c==0.0)
break;
if(is_triangle(a,b,c)) {
printf("三角形面积:%.2lf\n",SABC(a,b,c));
}
else
printf("不能构成三角形。\n");
}
return 0;
}
另外,站长团上有产品团购,便宜有保证
第4个回答 2011-04-01
stdio.h>
#include<math.h>
bool is_triangle(double a,double b,double c) {
if(a+b<=c || a+c<=b || b+c<=a)
return false;
return true;
}
double SABC(double a,double b,double c) {
double p;
p=(a+b+c)/2.0;
return sqrt(p*(p-a)*(p-b)*(p-c)); //海伦公式
}
int main() {
double a,b,c;
while(1) {
printf("输入三角形的三条边(以0 0 0结束):\n");
scanf("%lf%lf%lf",&a,&b,&c);
if(a+b+c==0.0)
break;
if(is_triangle(a,b,c)) {
printf("三角形面积:%.2lf\n",SABC(a,b,c));
}
else
printf("不能构成三角形。\n");
}
return 0;
}