本文目录一览:
C语言程序设计方案!!二维数组应用 矩阵算法 求高人
#include
stdio.h
void
input_data(int
*l,int
*r,int
data[100][100])
{
int
i,j,k;
printf("输入矩阵行数:");
scanf("%d",l);
printf("输入矩阵列数:");
scanf("%d",r);
printf("按行输入数据,数据间用空格间隔:\n");
for(i=0;i*l;i++)
for(j=0;j*r;j++)
scanf("%d",data[i][j]);
}
int
add_subtra(int
m1[100][100],int
l1,int
r1,
int
m2[100][100],int
l2,int
r2,char
m,int
rm[100][100])
{
int
i,j;
if(l1!=l2
||
r1!=r2)
{
printf("矩阵数据错误1.\n");
return;
}
if(m=='+')
for(i=0;il1;i++)
for(j=0;jr1;j++)
rm[i][j]=m1[i][j]+m2[i][j];
else
for(i=0;il1;i++)
for(j=0;jr1;j++)
rm[i][j]=m1[i][j]-m2[i][j];
}
int
mul(int
m1[100][100],int
l1,int
r1,
int
m2[100][100],int
l2,int
r2,int
m[100][100])
{
int
i,j,k;
if(l1!=r2
)
{
printf("矩阵数据错误2.\n");
return;
}
for(i=0;il1;i++)
for(j=0;jr2;j++)
{
m[i][j]=0;
for(k=0;kr1;k++)
m[i][j]+=m1[i][k]*m2[k][j];
}
}
int
output(int
m[100][100],int
l,int
r)
{
int
i,j;
for(i=0;il;i++)
{
for(j=0;jr;j++)
printf("%3d
",m[i][j]);
printf("\n");
}
}
int
main()
{
int
d1[100][100],d2[100][100],d[100][100];
int
l1,r1,l2,r2;
int
i,j,k;
char
mark[2];
printf("输入第一个矩阵数据:\n");
input_data(l1,r1,d1);
printf("输入的第一个矩阵:\n");
output(d1,l1,r1);
printf("输入第二个矩阵数据:\n");
input_data(l2,r2,d2);
printf("输入的第二个矩阵:\n");
output(d2,l2,r2);
printf("指定运算符(+/-/*):");
scanf("%s",mark);
while(mark[0]!='+'
mark[0]!='-'
mark[0]!='*')
{
printf("符号错误请重新输入(+/-/*):");
scanf("%s",mark);
}
switch(mark[0])
{
case
'+':
case
'-':
add_subtra(d1,l1,r1,d2,l2,r2,mark[0],d);
break;
case
'*':
mul(d1,l1,r1,d2,l2,r2,d);
break;
}
//output(d1,l1,r1);
//output(d2,l2,r2);
printf("运算:%c,计算结果为:\n",mark[0]);
output(d,l1,r2);
system("pause");
}
两个运算矩阵可以是大小不同的,
输出结果由被乘数矩阵的行和乘数矩阵的列决定,
你要求的输出格式比较烦,没时间不够啦!有时间再玩吧。
C语言编程的一般步骤有哪些?
首先明确要解决的问题;
其次分析问题并选择想要利用的算法,或者自己想一个的算法;
画流程图,明确解决问题过程中的逻辑关系和时序关系;
然后才是上机编写代码;
之后是debug调试,基本就可以执行了。
具体就上机编写代码来讲,首先需要打开C++的开发环境,然后新建一个工程;
然后新建一个文件(如果是VC6.0就可以继续写了,如果是VS20**的话就需要在文件菜单中选择将文件移入工程);
在文件中写入代码,然后就可以编译运行了。
具体代码的格式来讲,首先应该引用头文件#include"头文件名(不带.h)",然后在所有头文件引入之后加一行using namespace std;后面可以写函数了,具体就看你自己的发挥了~
c语言如何编程
C语言编程如何快速实现
在我们初次学习C语言的时候,总想着快速的实现编译过程。那么C语言编程究竟是如何实现的呢,当然是要通过自己喜欢的编译器来编译完成,那么今天就为大家介绍C语言编程是如何快速的实现。
1. 首先我们下载一款适合C语言的编译器,今天为大家讲解的C语言编译器为CodeBlocks,该编译器没有太过复杂,很符合初学者,简单上手快。
2. 首先双击打开编译器,进入登录选择界面,我们选择添加一个新项目。
3. 然后进入选择界面,优先选择“Console application”,然后双击进入下一个界面。
4. 进入之后便是提示界面,我们选择“Next”下一步。然后在选择C++语言,C++语言是C语言的升级版,然后再次点击“Next”,进入下一步。
5. 选择创建的名称,可以创建一个醒目的名称。然后便是文件放置位置,然后点击“Next”。
6. 点击最左侧栏“main.cpp”会出现编程书写界面,然后便可以实现我们的代码编程。
7. 首先要属于有关C语言的头文件#includestdio.h,头文件是为了下面更好的应用,如果编程的代码有遇到其他头文件如数学函数头文件#includemath.h,以及字符串头文件#includestring.h。
8. 对于C语言我们首先要学会的便是输出“Hello world”,那么今天我们就实现Helloworld的输出。在主程序优先写出main函数,然后便是对于我们要用到的内容开始书写。因为我们只需要输出简单的“Helloworld”,所以整条语句便是只有一行printf("");输出的意思,我们只需要将自己想要输出的填写在双引号里面便可以实现。那么我们的代码行便成为了printf("Hello world");
9. 下面便是测试我们的代码是否正确,点击上方的编译,如果成功,便可以运行如下,运行框成功出现我们结果,表明编译成功,便完成了基础的C语言编译。
C语言编程
这5道题,我全部在机子上调试通过了。。。all right!。。。你在vc++6上直接去运行,应该是没有问题的。有些题的解决方案还不算很完美,不过已经完全到达要求。
第一道:
#include "stdio.h"
main()
{ int j,k,a[12],*p;
p=a[0]; //是p=a[0];(或者p=a;)将指针指向数组头
for(j=0;j12;j++)
scanf("%d",p++);
p=a[0]; //输入之后,再次将指针指向数组头
for(j=0;j12;j++)
{ printf("%d",*p++);
if((j+1)%4 == 0) //是j除以4求余,j从0开始的,不行。所以改成j+1
printf("\n");
}
}
第二题:编写一个函数将给定字符串指定起始位置后的字符串复制到另一个字符串中去,主函数中输入一个字符串,调用该子函数,复制出另一字符串,后将其输出。
就是写个子函数那个:
#include "stdio.h"
#include "string.h"
void main()
{
void copystr(char*,char*,int);
int m;
char str1[20],str2[20];
printf("input string:");
gets(str1);
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,int m)
{
char *p=str1,*q=str2;
for(int i=1;im;i++) //指针移动到目的位置
p++;
while((*q++=*p++)!='\0'); //开始赋值,直到结尾
}
3. 编写一个程序,从键盘输入一个1-7之间的数字,输出其对应星期的英文。对应
顺序如下表所示:
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
7 Sunday
提示:使用字符指针数组。
#include "stdio.h"
void main()
{
int m;
char str1[7][10]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
printf("which date that begin to output,please enter 1-7:?");
scanf("%d",m);
if (m0 ||m7)
printf("please enter right number!\n");
else
printf("today is :%s\n",str1[m-1]);
}
4. 有若干名学生,共修5门功课。他们的学号和成绩都存放在二维数组s中,每一
行对应一名学生,且每行的第1列存放学生的学号,现要输出指定学生的成绩。
要求:补充完整search函数。
#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;
no=no%m; //输入一个数,超过maxn的数求其余数,即 让它在数组范围内
for(i=0;ino-1;i++)
{
p++; //指针移到选中的一组数据上,以便进行数据输入
}
printf("stuNo:\t1\t2\t3\t4\t5\n");
for(i=0;i6;i++)
printf("%d\t",(*p)[i]); //输出选中数据
printf("\n");
}
void main()
{
int num;
printf("Enter the number of student:\n");
scanf("%d",num);
search(s,MAXN,num);
}
5. 调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:
⑴ 2个数的和,
⑵ 2个数交换值。
要求用函数指针调用这两个函数,结果在主函数中输出。
#include stdio.h
void main() //添加返回类型
{ int a,b,c=0; //用‘;’
void (*p)(int *a,int *b); //规范书写其相对应的函数指针
void (*q)(int *a,int *b,int *c);
void sum(int *a,int *b,int *c); //声明函数,先声明,后调用,形参用指针类型,才能使a,b互换。
void swap(int*,int *);
printf("Enter a:"); //分别输入a。和b
scanf("%d",a);
printf("Enter b:");
scanf("%d",b);
p=swap; //p指向的swap函数地址,所以加一个地址运算符
p(a,b);
printf("a=%d,b=%d\n",a,b);
q= sum; //这里的空格记得去掉哦,因为百度一些特殊规定,这里的 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;
}