我在mutisim10中用怎样运行c语言程序写的程序怎么不能运行

c语言写的程序 题目:输入10个数,将其中最小的数与第一个数交换,最大数与最后一个数交换,用3个函数表示_百度知道
c语言写的程序 题目:输入10个数,将其中最小的数与第一个数交换,最大数与最后一个数交换,用3个函数表示
错在哪?#include &stdio.h&void scan(int a[],const int n);void extra(int a[],const int n);void print(int a[],const int n);int main(){
int a[11];
scan(a[11],10);
extra(a[11],10);
print(a[11],10);
return 0;}void scan(int a[],const int n){
for(i=0;i&n;i++) scanf(&%d&,a[i]);}void extra(int a[],const int n){
int i,ta,ti,max,
max=a[0];min=a[0];
for(i=0;i&n;i++)
if(a[i]&max) {max=a[i];ta=i;}
if(a[i]&min) {min=a[i];ti=i;}
a[ta]=a[0];a[0]=
a[ti]=a[9];a[9]=}void print(int a[],const int n){
for(i=0;i&n;i++) printf(&%d &,a[i]);}
提问者采纳
#include &stdio.h&void scan(int a[],const int n);void extra(int a[],const int n);void print(int a[],const int n);int main(){
int a[10];//a[10]即可
scan(a,10);//函数应该传地址
extra(a,10);
print(a,10);
return 0;}void scan(int a[],const int n){
for(i=0;i&n;i++)
scanf(&%d&,&a[i]);//必须为地址}void extra(int a[],const int n){// 楼主算法不清晰,有可能第一个值是最小或最小,所以先把ta ti初始化,不然到最后交换有问题。
int i,ta=0,ti=0,max,
max=a[0];min=a[0];
for(i=0;i&n;i++)
if(a[i]&max)
if(a[i]&min)
a[ta]=a[9];a[9]=//此处,如题需要的话,先把最大值所在位置放上最后一个值,然后把最大值放到数组最后。最小值方法一样。
a[ti]=a[0];a[0]=}void print(int a[],const int n){
for(i=0;i&n;i++) printf(&%d &,a[i]);}
楼主对函数传值还是不太清楚,多看点相关书籍.
其他类似问题
为您推荐:
其他3条回答
void scan(int a[],const int n){
for(i=0;i&n;i++) scanf(&%d&,a[i]);
==&for(i=0;i&n;i++) scanf(&%d&,a+i); } void extra(int a[],const int n){
int i,ta=0,ti=0,max,
//////////////////////////////////////
max=a[0];min=a[0];
for(i=1;i&n;i++) ////////////////
if(a[i]&max) {max=a[i];ta=i;}
if(a[i]&min) {min=a[i];ti=i;}
a[ta]=a[0];a[0]=
a[ti]=a[9];a[9]= ==&a[ti]=a[n-1];a[n-1]= }还有一个问题是,如果所有数据都是一样的话,你的那个extra就有点不妥。
for(i=0;i&n;i++) scanf(&%d&,a[i]);要写成scanf(&%d&,a+i);或者scanf(&%d&,&a[i]);这儿接受的是地址
你这不都写完了吗?
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁《C语言程序设计》上机实验指导书
学习C程序设计课程不能满足于“懂得了”,满足于能看懂书上的程序,而应当熟练地掌握程序设计的全过程,即独立编写源程序、独立上机调试、独立运行程序和分析结果。
上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编写的程序的正确与否。程序设计课程上机实验的目的是:
1.加深对讲授内容的理解,尤其是一些语法规定,课堂讲授既枯燥无味又难以记忆,但它们都很重要。能多次上机就能自然地、熟练地掌握。通过实验来掌握语法规则是行之有效的方法。
2.熟悉所用的操作系统。
3.学会上机调试程序。通过反复调试程序掌握根据出错信息修改程序的方法。要真正掌握这门课程,不仅应当了解和熟悉有关理论和方法,还要求自己动手实现即会编程并上机调试通过。故应给予充分重视。调试程序固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来累积经验,而且有些经验是只能意会难以言传。调试程序的能力是每个程序设计人员应当掌握的一项基本功。
4.通过调试完善程序,做实验时不要在程序通过后就认为搞定、完成任务了,而应当在己通过的程序上作一些改动(例如修改一些参数、增加程序一些功能、改变输入数据的方法等),再进行编译、连接和运行;甚至于“自设障碍”,即把正确的改为有错的(例如,用scanf函数输入变量时,漏写&符号;使数组下标出界;使整数溢出等),以观察和分析所出现的情况。
这样才能把实验上机内容所涉及的知识点和程序设计方法都变成自己的。
1.了解所用的计算机系统(包括C编译系统)的性能和使用方法。
2.复习和掌握与本实验有关的教学内容。
3.准备好上机所需的程序,切忌不编程或抄别人的程序去上机,应从一开始就养成严谨的科学作风。
4.对程序中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时给予注意。
5.准备好调试程序和运行程序所需的数据。
6.在上实验课之前必须写好预习报告(编程题源程序用纸写好或画好程序流程图)。
三、实验后整理出实验报告,实验报告包括以下内容:
1.实验项目名称。
2.源程序。
3.调试中遇到的错误。
4.运行结果分析。
5.实验总结
四、实验任务与时间安排 
拟实验时间
C程序的运行环境及运行一个C程序
数据类型及顺序结构
选择结构程序设计
以下实验选做
编译预处理
结构体、共用体
C语言的运行环境和运行过程
1、了解Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。
2、了解在该系统上如何编辑、编译、连接和运行一个C程序。
3、通过运行简单的C程序,初步了解C源程序的特点。
上机实验应一人一组,独立实验。上机过程中出现的问题,除了是系统的问题以外,不要轻易举手问老师。尤其对“出错信息”,应善于分析判断,找出出错的行,然后检查该行或其上一行。
三、实验内容
1、Visual C++的启动以及工作环境介绍。
2、在Visual C++环境中运行C语言源程序。
四、实验的步骤
1.双击桌面Visual C++快捷方式进入Visual
C++,或通过执行“开始=&程序=&
Microsoft Visual Studio 6.0=& Microsoft Visual
C++6.0”。
2.单击“文件”菜单的“新建”命令。
3.在打开的“新建”对话框中选择“文件”标签。
4.选择C++ Source File,选择文件保存位置,然后在文件输入栏中输入文件名。如图所示:
5.输入源程序。
输入下面的程序,注意区分大小写。
#include &stdio.h&
void main()
printf("This is a C program.\n");
6.编译程序:按“Ctrl+F7”或通过“编译”菜单中的“编译”命令,或使用工具栏中的相应工具进行编译                 编译   连接  运行
若程序有错则找到出错行修改程序。
7.连接:若程序没有语法错误,则可按功能键F7或执行“编译”菜单中的“构件”命令或通过工具栏中的相关工具(编译工具右边工具),进行连接生成可执行文件。
8.运行程序:按组合键“Ctrl+F5”,或通过“编译”菜单中的执行命令,或通过工具栏中的“!”工具运行程序。
9. 关闭工作区,新建一个程序,然后输入并运行一个需要在运行时输入数据的程序
#include &stdio.h&
void main()
int a,b,c;
int max(int x,int y);
printf("input a and b:");
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("\n max=%d",c);
int max(int x,int y)
if(x&y) z=x;
else& z=y;
return(z);
(1)运行程序,若程序有错,则修改错误后继续运行程序,当没有错误信息时输入:2,5并按Enter键,查看运行结果。
(2)将程序的第三行改为:b;c;然后按F9看结果如何,将其修改为int
a,b,c;将子程序max的第3,4行合并为一行,运行程序,看结果是否相同。
及顺序结构
一、实验目的
1.掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。
2.掌握不同数据类型之间赋值的规律。
3.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。
4.编写顺序结构程序并运行。
二、实验内容和步骤
1.输入并运行下面的程序
#include&stdio.h&
void main()
{char& c1,c2;
printf("%c %c",c1,c2);
(1)运行此程序
(2)加入下面的一个语句作为“}”前的最后一个语句:
printf("%d,%d\n",c1,c2);
(3)将第3行改为:
int& c1,c2;
然后再运行程序,并观察结果是否相同。
(4)将第3行改为int& c1,c2;将第4,5行依次改为:
c1=a;c2=b;
c1="a";c2="b"
c1=300;c2=400;
每改为一次后运行程序,观察结果。
2.输入并运行下面的程序
#include&stdio.h&
void main()
unsigned c,d;
printf("%d,%d\n",a,b);
printf("%u,%u\n",a,b);
printf("%u,%u\n",c,d);
printf("%d,%d\n",a,b);
printf("%u,%u\n",c,d);
请对照程序和运行结果分析:
(1)将一个负整数赋给一个无符号的变量,会得到什么结果。画出它们在内存中的表示形式。
(2)将一个大于32767的长整数赋给一个整型变量,会得到什么结果。画出它们在内存中的表示形式。
(3)将一个长整数赋给无符号的变量,会得到什么结果。画出它们在内存中的表示形式。
3.输入三角形三边长,求三角形面积。
#include “math.h”
float a,b,c,s,
scanf(“%f
,%f,%f”,&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“area=%f”,area);
4. 已知圆半径,圆柱高,求圆周长,圆柱体积。
float r,h,l,v,
pi=3.1415926;
scanf(“%f,%f”,&r,&h);
v=pi*r*r*h;
printf(“圆周长为:% 6.2f \n”,l);
printf(“%圆柱体积为: 6.2f ”,v);
5. 输入一个摄氏温度,要求输出华氏温度。公式为f=5/9*c+32.
float& c,f;
scanf(“%f”,&c);
f=5.0/9*c+32;
printf(“% 5.2f \n”,c);
一、实验目的
1.了解C语言表示逻辑值的方法。
2.学会正确使用逻辑运算符和逻辑表达式的方法。
3.熟悉if语句和switch语句。
4.结合程序掌握一些简单的算法。
5.学习调试程序的方法。
二、实验内容
本实验要求编程解决以下问题,然后上机调试运行程序。
用scanf函数输入x的值,求y的值。
程序提示:
main函数结构如下:
定义实型变量x与y
使用scanf函数输入x的值
输出x的值与y的值
2.给出一个百分制的成绩,要求输出成绩等级A,B,C,D,E。90分及以上为A,80-89为B,70-79为C,60-69为D,60分以下为E。要求从键盘输入成绩,然后输出相应等级,分别用if语句和switch语句实现。
程序提示:
(1)使用if语句的main函数结构如下:
定义float型变量score,char型变量grade
输入百分制成绩赋给score
if& score&=90
else& grade='E'
输出百分制成绩和等级。
(2)使用switch语句的main函数结构如下:
定义float型变量score,char型变量grade
输入百分制成绩赋给score
switch(int(score/10))
case& 9:&&
grade='A';
case& 8:&&
grade='B';
case& 7:&&
grade='C';
case& 6:&&
grade='D';
default:&&
grade='E';
输出百分制成绩和等级
3.编程实现:输入一个不多于5位的正整数,要求:(1)输出它是几位数,(2)分别输出每一位数字,(3)按逆序输出各位数字,如原数为321,则应输出123。
应准备以下测试数据
要处理的数为1位正整数;
要处理的数为2位正整数;
要处理的数为3位正整数;
要处理的数为4位正整数;
要处理的数为5位正整数;
除此之外,程序还应当对不合法的输出作必要的处理。例如:
输入负数;
输入的数超过5位;
程序提示:main函数结构如下:
定义long型变量num,int型变量c1,c2,c3,c4,c5
输入一个不超过5位的正整数赋给num
if& num&99999
输出:输入的数超过5位
else if& num&0
输出:输入的数是一个负数
求得num的各位数分别赋给C1,C2,C3,C4,C5
c1=num/10000;
c2=(num-c1*1;
c3=(num/100);
c4=(num/10);
&&&&&&&&&&&&&
{printf("\n%ld是一个5位数\n",num);
printf("其各位分别为:,,,,\n",c1,c2,c3,c4,c5);
&&&&&&&&&&&&&
&printf("逆序输出为:\n",c5,c4,c3,c2,c1);
&&&&&&&&&&&&&
else if(c2&0) 是4位数,输出其各位,格式与5位数类似
else if(c3&0) 是3位数,输出其各位,格式与5位数类似
else if(c4&0) 是2位数,输出其各位,格式与5位数类似
else if(c5&0) 是1位数,输出其各位,格式与5位数类似
4.编程实现:输入4个整数,要求按由小到大的顺序输出。得到正确结果后,修改程序使之按由大到小的顺序输出。
main函数结构如下:
int a,b,c,d,t;
输入4个整数:赋给a,b,c,d;
if(a&b) 交换a,b
if(a&c) 交换a,c
if(a&d) 交换a,d
if(b&c) 交换b,c
if(b&d) 交换b,d
if(c&d) 交换c,d
输出a,b,c,d
一、实验目的
熟悉使用while语句,do-while语句和for语句实现循环的方法。掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
二、实验内容
1.输入两个正整数m和n,求出它们的最大公约数和最小公倍数。
输入时,使m&n,观察结果是否正确;
再输入时使m>n,观察结果是否正确;
修改程序使对任何的整数都能得到正确的结果。
程序提示:
main结构如下:
int m,n,r,tm,
输入两个正整数赋给m,n
tm=m;tn=n;
if(m&n)交换m,n
&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
输出最大公约数n和最小公倍数m*tn/n;
2.编写程序利用公式: 求e的近似值,精确到小数后6位
程序提示:
main函数算法为:
定义int型变量n,i,double型变量e,p,t
e=1;t=1;p=1;i=1
while(t&=1e-7)
3.编程求1到n中能被3或7整除的数之和。分别用for循环语句和while循环语句完成本题。
程序提示:
for循环语句的主要算法如下:
for(i=1;i&=n;i++)
i能被3或7整除
    sum=sum+i
while循环语句的主要算法如下:
while(i&=n)
i能被3或7整除
    sum=sum+i++;
4.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少桃子。
在得到正确结果后,修改题目,改为每天早上都吃了前一天剩下的一半加二个,请修改程序,并运行,检查运行结果是否正确。
程序提示:
使用以下循环结构
for(i=9;i&=1;i--)
一、实验目的
1.掌握一维数组与二维数组的定义、赋值及输入输出方法。
2.掌握字符数组和字符串函数的使用。
3.掌握与数组有关的算法(特别是排序算法)
二、实验内容
1.用选择法对10个整数排序。10个整数用scanf函数输入。
程序提示:
输入10个整数存放到数组a的a[1]到a[10]中
输出10个数
for(i=1;i&10;i++)
&&&&&&&&&&&&&
&&&&&&&&&&&&&
for(j=i+1;j&=10;j++)
&&&&&&&&&&&&&
if(a[min]&a[j]) min=j;
&&&&&&&&&&&&&
交换a[i]与a[min]
输出排序后的10个数
2.有15个数存放在一个数组中,输入一个数要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出无此数,要找的数用scanf函数输入。
程序提示:
用循环语句输入15个数
调用排序算法对其进行排序
while(flag)
&&&&&&&&&&&&&
输入要查找的数
&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
if(number&a[0]||number&a[N-1])
&&&&&&&&&&&&&
while(sign==1&&top&=bott&&loca&=0)
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
mid=(bott+top)/2;
&&&&&&&&&&&&&&&&&&&&
if(number==a[mid])
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
printf("找到了,数%d在数组的第%d位、\n",number,loca+1);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
else if(number&a[mid]) bott=mid-1;
&&&&&&&&&&&&&&&&&&&&
else top=mid+1;
&&&&&&&&&&&&&
&&&&&&&&&&&&&
if(sign==1||loca==-1) printf("\n查无此数\n");
&&&&&&&&&&&&&
printf("\n是否继续查找?(Y/N)");
&&&&&&&&&&&&&
scanf("%c",&c);getchar();
&&&&&&&&&&&&&
printf("\n");
&&&&&&&&&&&&&
if(c=='N'||c=='n') flag=0;
3.将两个串连接起来,不要用strcat函数。
程序提示:
分别输入二个串字符
i指向第一个数组的最后一个空数组元素
while(s2[j]!='\0')
&&&&&&&&&&&&&
s1[i++]=s2[j++];
s1[i]='\0';
输出连接后的字符串
4.找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。至少准备两组测试数据:
(1)二维数组有鞍点
& 210& -3&
(2)二维数组没有鞍点
用scanf函数从键盘输入数组的各元素的值,检查结果是否正确,题目未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。
程序提示:
flag2=0;//矩阵中无鞍点
for(i=0;i&n;i++)//找第i行的鞍点
&&&&&&&&&&&&&
max=a[i][0];maxj=0;
&&&&&&&&&&&&&
用for循环语句找第i行的最大值存放在max中,其下标j保存到maxj中
&&&&&&&&&&&&&
for(k=0,flag1=1;k&n&&flag1;k++)//判断max是否在该列上最小flag1=0则不是最小
&&&&&&&&&&&&&
if(max&a[k][maxj]) flag1=0;//max不是该列的最小元素
&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
printf("\n第%d行第%d列的%d是鞍点\n",i+1,maxj+1,max);
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
}//endfori
if(!flag2) printf("\n矩阵中无鞍点\n");
一、实验目的
1.掌握定义函数的方法。
2.掌握函数实参及形参的对应关系以及“值传递”方式。
3.掌握函数的嵌套调用和递归调用的方法。
4.掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。
5.学会对多文件程序的编译和运行。
二、实验内容
1.写出一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。本程序应准备以下测试数据:17,34,2,1,0,分别输入数据,运行程序并检查结果是否正确。
程序提示:
求素数函数如下:
int prime(int n)
{if n&2& return 0
for(i=2;i&n/2;i++)
&&&&&&&&&&&&&
if& n能被i整除 return 0;
main函数中输入一个整数赋给变量n,通过prime(n)判断其是否素数,若函数值为1则是素数否则不是素数。
2.用一个函数来实现将一行字符串中最长的单词输出。此行字符从主函数传递给该函数。(1)把两个函数放在同一个程序文件中。
(2)将两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。
程序提示:
寻找最长单词的起始位置函数:
int longest(char string[])
//n为字符串的长度,len为每个单词的长度
//length为最长单词的长度,point为最长单词的起始位置
//函数返回最长单词的起始位置
int len=0,i,n,length=0,flag=,place=0,
n=strlen(string);
for(i=0;i&=n;i++)
&&&&&&&&&&&&&
if  string[i]为英文字母
&&&&&&&&&&&&&&&&&&&&
if(flag) {point=i;flag=0;}
&&&&&&&&&&&&&&&&&&&&
else len++;
&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
if(len&=length)
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
在main函数中输入一行字符,然后调用上面函数取得最长字符的开始位置,从该位置开始输入数组元素,直到输出的数组元素不是英文字母时止。
3.用递归法将一个整数n转换成字符串。例如输入483.应输出字符串“483”。n的位数不确定,可以是任意的整数。
程序提示:
void convert(int n)
if((i=n/10)!=0)
&&&&&&&&&&&&&
convert(i);
putchar(n+'0');
在main函数中输入一个整数,然后先输出该数的符号,然后调用函数convert(n)。
4.求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数用另一个函数根据求出的最大公约数求最小公倍数。分别用下面的两种方法编程。
(1)不用全局变量,在主函数中输入两个数和输出结果。
(2)用全部变量的方法,数据的传递通过全部变量的方法。
程序提示:
使用下面函数求最大公因子,其中v为最大公因子,若将v设为外部变量,则可不使用return语句。
int hcf(int u,int v)//求最大公因子
if(v&u){t=u;u=v;v=t;}
while((r=u%v)!=0)//余数r不为0时继续作辗转相除法
{u=v;v=r;}
return(v);
5.写一个函数,输入一个十六进制数,输出相应的十进制数。
程序提示:
输入时将十六进制数作为一个字符串输入,然后将其每一个字符转换成十进制数并累加,转换方法如下:
if(s[i]&'0'&&s[i]&='9')
&&&&&&&&&&&&&&&&&&&&
n=n*16+s[i]-'0';
&&&&&&&&&&&&&
if(s[i]&='a'&&s[i]&='f')
&&&&&&&&&&&&&&&&&&&&
n=n*16+s[i]-'a'+10;
&&&&&&&&&&&&&
if(s[i]&='A'&&s[i]&='F')
&&&&&&&&&&&&&&&&&&&&
n=n*16+s[i]-'A'+10;
一、实验目的
1.通过实验进一步掌握指针的概念,会定义和使用指针变量。
2.能正确使用数组的指针和指向数组的指针变量。
3.能正确使用字符串的指针和指向字符串的指针变量。
4.能正确使用指向函数的指针变量。
5.了解指向指针的指针的概念及其使用方法。
二、实验内容
以下程序要求使用指针处理。
输入三个整数,按由小到大的顺序输出。运行无错后改为:输入三个字符串,按由小到大的顺序输出。
程序提示:
先排序,排序时交换两个数使用以下函数:
void swap(int *p1.int *p2)
& *p1=*p2;
调用格式为:swap(&a,&b)可实现a与b的交换
字符串的交换使用以下函数:
void swap(char *p1,char *p2)
char p[80];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
main函数结构如下:
int n1,n2,n3,*p1,*p2,*p3;
  void swap(int *p1,int *p2);
  输入三个数或三个字符串
  p1,p2,p3分别指向这三个数
  if(n1&n2) swap(p1,p2);
  if(n1&n3) swap(p1,p3);
  if(n2&n3) swap(p2,p3);
  输出这三个数
2.将一个3&3的矩阵转置,用一函数实现。
在一主函数中用scanf函数输入以下矩阵元素:
1  3  5
7  9  11
13  15  17
将数组名作为函数参数,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出转置后的矩阵。
程序提示:使用下面函数实现矩阵转置
void move(int *p)
int i,j,t;
for(i=0;i&3;i++)
&&&&&&&&&&&&&
for(j=i;j&3;j++)
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
t=*(p+3*i+j);
&&&&&&&&&&&&&&&&&&&&
*(p+3*i+j)=*(p+3*j+i);
&&&&&&&&&&&&&&&&&&&&
*(p+3*j+i)=t;
&&&&&&&&&&&&&
main函数结构如下:
int a[3][3],*p,i;
void move(int *p);
用for循环语句输入矩阵
p=&a[0][0];
3.有n人围成一个圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
程序提示:报数程序段如下:
for(i=0;i&n;i++)
&&&&&&&&&&&&&
*(p+i)=i+1;
i=0;//i为现正报数的人的编号
k=0;//k为1.2.3计数时的计数变量
m=0;//m为退出的人数
while(m&n-1)
&&&&&&&&&&&&&
if(*(p+i)!=0)k++;
&&&&&&&&&&&&&
if(k==3)//对退出的人的编号置0
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
if(i==n)i=0;
4.用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数的原型为:
int& strcmp(char&
*p1,char& *p2);
设p1指向字符串s1,p2指向字符串s2.要求当两个字符相同时返回0,若两个字符串不相等,则返回返回它们二者第一个不同字符的ASCII码的差值。两个字符串s1,s2由主函数输入,strcmp函数的返回值也由主函数输出。
程序提示:使用以下函数进行比较:
int strcmp(char *p1,char *p2)
while(*(p1+i)==*(p2+i))
&&&&&&&&&&&&&
if(*(p1+i++)=='\0') return 0;
return *(p1+i)-*(p2+i);
5.写一个用矩形法求定积分的通用函数,分别求:
说明:积分中用到的三个函数已在系统的数学函数库中,程序开头要加#include&math.h&
调用格式为sin(x),cos(x),exp(x)
程序提示:求积分函数如下:
float integral(float (*p)(float),float a,float b,int n)
float x,h,s;
h=(b-a)/n;
for(i=0;i&n;i++)
&&&&&&&&&&&&&
&&&&&&&&&&&&&
s=s+(*p)(x)*h;
return(s);
调用格式:
float (*p)(float);
float fsin(float);
c=integral(p,a1,b1,n);
fsin函数如下:
float fsin(float x)
{return sin(x);}
6.用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数,n和各整数在主函数中输入,最后在主函数中输出。
程序提示:排序函数如下:
void sort(int **p,int n)
for(i=0;i&n-1;i++)
&for(j=i+1;j&n;j++)
&&&&&&&&&&&&&
if(**(p+i)&**(p+j))
&&&&&&&&&&&&&&&&&&&&
{temp=*(p+i); *(p+i)=*(p+j); *(p+j)=}
main函数如下:
void main()
void sort(int **p,int n);
int i,n,data[10],**p,*pstr[10];
printf("Input n:");
scanf("%d",&n);
for(i=0;i&n;i++)
&&&&&&&&&&&&&
pstr[i]=&data[i];
printf("\nInput %d integer number:\n",n);
for(i=0;i&n;i++)
&&&&&&&&&&&&&
scanf("%d",pstr[i]);
sort(p,n);
printf("\nNow,the sequence is:\n");
for(i=0;i&n;i++)
&&&&&&&&&&&&&
printf("]",*pstr[i]);
printf("\n");
一、实验目的
1.掌握宏定义的方法。
2.掌握文件包含处理方法。
3.掌握条件编译的方法。
二、实验内容
1.定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值。
程序提示:
使用以下宏定义:
#define SWAP(a,b) t=b;b=a;a=t
调用格式:SWAP(a,b);
2.设计输出实数的格式,包括:(1)一行输出一个实数,(2)一行内输出两个实数,(3)一行内输出三个实数。实数用%6.2f格式输出。用一个文件printf_format.h包含以上用#define命令定义的格式,编写一程序,将printf_format.h包含到程序中,在程序中用scanf函数读入三个实数给f1,f2,f3,然后用上面定义的三格式分别输出:f1; f1,f2;f1,f2,f3。
程序提示:
使用以下宏定义:
#define PR printf
#define NL "\n"
#define Fs "%f"
#define F "%6.2f"
#define F1 F NL
#define F2 F "\t" F NL
#define F3 F"\t" F"\t" F NL
然后再建立一个C程序,程序内容如下
#include&stdio.h&
#include"p_f.h"
void main()
& float f1,f2,f3;
& PR("Input three floating numbers
f1,f2,f3:\n");
& scanf(Fs,&f1);
& scanf(Fs,&f2);
& scanf(Fs,&f3);
& PR("Output one floating number each
line:\n");
& PR(F1,f1);
& PR(F1,f2);
& PR(F1,f3);
& PR("Output two number each line:\n");
& PR(F2,f1,f2);
& PR("Output three number each line:\n");
& PR(F3,f1,f2,f3);
一、实验目的
1.掌握结构体类型变量的定义和使用。
2.掌握结构体类型数组的概念和使用。
3.掌握链表的概念,初步学会对链表进行操作,学会在函数之间传送链表的方法。
4.掌握共用体的概念与使用。
二、实验内容
编写一个程序使用动态链表实现下面的功能:
建立一个链表用于存储学生的学号、姓名和三门课程的成绩和平均成绩
输入学号后输出该学生的学号、姓名和三门课程的成绩
输入学号后删除该学生的数据
插入学生的数据
输出平均成绩在80分及以上的记录
要求用循环语句实现B--E的多次操作
程序提示:参照教材中建立链表程序
链表头指针的传递使用return语句,或使用二级指针,请参考上课课件
说明:本实验为设计性实验,程序由学生自己完成,实验报告打印后上交,源程序同时上交
一、实验目的
1.掌握按位的概念和方法,学会使用位运算符。
2.学会通过位运算实现对某些位的操作。
二、实验内容
1.编写一个程序,检查所用的计算机系统的C编译在执行右移时是按照逻辑右移的原则,还是按照算术右移的原则进行操作。如果是逻辑右移,则请编写一个函数实现算术右移,若是算术右移,则请编写一个函数实现逻辑右移。
程序提示:
unsigned getbits1(unsigned value,int n)
z=z|(value&&n);
return(z);
unsigned getbits2(unsigned value,int n)
z=(~(1&&n))&(value&&n);
main函数内容如下:
int a,n,m;
unsigned getbits1(unsigned value,int n);
unsigned getbits2(unsigned value,int n);
if((a&&5)!=a)
&&&&&&&&&&&&&
printf("\nlogical move!\n");
&&&&&&&&&&&&&
&&&&&&&&&&&&&
printf("\n arithmetic move!\n");
&&&&&&&&&&&&&
printf("Input an octal number:");
scanf("%o",&a);
printf("\nHow many digit move owards the right:");
scanf("%d",&n);
&&&&&&&&&&&&&
printf("\nArithmetic right move,result:%o\n",getbits1(a,n));
&&&&&&&&&&&&&
printf("Logical right move,result:%o",getbits2(a,n));
2.编写一个函数getbits,从一个16位的单元中取出某几位(即这几位保留原值,其余位为0),函数调用形式为:
getbits(value,n1.n2)
value为该16位数的值,n1为欲取出的起始位,n2为欲取出的结束位。要求用八进制数输出这几位。注意,应先将这几位右移到最右端,然后用八进制形式输出。
程序提示:
unsigned getbits(unsigned value,int n1.int n2)
z=(z&&n1)&(z&&(16-n2));
printf("%o",z);
z=value&z;
z=z&&(16-n2);
3.设计一个函数,使给出一个函数的原码,输出该数的补码。
程序提示:
unsigned getbits(unsigned value)
& z=value&0100000;
& if(z==0100000)
z=~value+1;
实验十一 文件
一、实验目的
1.掌握文件、缓冲文件系统、文件指针的概念。
2.学会使用文件的打开、关闭、读、写等文件操作函数。
3.学会用缓冲文件系统对文件进行简单的操作。
二、实验内容
1.建立一个程序,用于产生200组算式,每组算式包括一个两位数的加法、减法(要求被减数要大于减数)、乘法和两位数除以一位数的除法算式,每一组为一行,将所有的算式保存到文本文件d:\a.txt中
程序提示:
#include&stdio.h&
#include&stdlib.h&
void main()
int i,a,b,t;
fp=fopen("d:\\a.txt","w");
for(i=1;i&=200;i++)
a=rand()0;b=rand()0;
if(b&2) b=b+2;
fprintf(fp,"\t-+-=&& ",a,b);
a=rand()0;b=rand()0;
if(a&b) {t=a;a=b;b=t;}
fprintf(fp,"\t---=&& ",a,b);
a=rand()0;b=rand()0;
fprintf(fp,"\t-&-=&& ",a,b);
a=rand()0;b=rand();
if(b&2) b=b+2;if(a&10) a=a+10;
fprintf(fp,"\t-&-=&& ",a,b);
fprintf(fp,"\n");
fclose(fp);
2.在WORD中打开d:\a.txt文件,查看文件内容是否正确
3.向d:\a.txt文件追加100组算式,每组算式包括一个一位数的加法、减法。
程序提示:对1题程序进行适当修改(修改打开方式与循环语句)。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 cmd如何运行c语言程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信