实验七 数组
C语言实验-第七章-第九章2

实验七:指针的应用【实验目的】1.掌握指针和指针变量,内存单元和地址、变量与地址、数组与地址的关系;2.掌握指针变量的定义和初始化,指针变量的引用方式;3.能正确使用数组的指针和指向数组的指针变量;【实验内容】1.填空题输入一个字符串,将其中的大写字母转换成小写字母,然后输出本程序主要是比较scanf()输入和gets()输入的区别#include <stdio.h>void main(){ char s[20];char *p=s;scanf(“%s”,p); /*注意用scanf()输入和gets()输入的区别*/while( 1 ){if( 2 ) *p=*p+ (‘a’-‘A’);p++ ;}puts ( 3 );}答案:1、*p!=’\0’2、(*p>='A')&&(*p<='Z')3、s运行结果:输入:Program输出:program输入:This is Program输出:this提示:scanf ()输入时遇到空格认为字符串结束,用gets()输入时只有遇到回车才认为字符串结束。
如键入any boy并回车,则2。
补充程序题输入15个整数存入一维数组,再按逆序重新调整该数组中元素的顺序然后再输出。
下面给出部分程序的内容,请将程序补充完整,然后上机调试。
部分程序清单如下:#include <stdio.h>void main(){ int a[15],*p1,*p2,x;for(p1=a;p1<a+15;p1++)scanf("%d",p1);for(p1=a,p2=a+14;p1<a+7;p1++,p2--){ x=*p1;*p1=*p2;*p2=x;}……}答案:for(p1=a;p1!=a+15;p1++)printf("%d ",*p1); // %d后面有一个空格运行结果:输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15输出:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1提示:(1)在整型数组中,没有结束标志,必须依靠数组中数据元素的个数控制循环次数。
c语言程序设计案例教程 实验项目-设计性题目参考答案

C语言程序设计案例教程(含实验)设计性实验的程序参考答案实验项目一 C程序的编辑、编译、连接和运行题目:编写程序,要求屏幕上显示如下信息:************************ This is a C program .************************程序:#include <stdio.h>void main(){printf(“***********************”);printf(“* This is a C program .*”);printf(“***********************”);}实验项目二数据类型、运算符、表达式题目(1)程序填空:输入1 个实数x,计算并输出其平方根(保留1 位小数)。
填空1.double x,root;2.root=sqrt(x);(2)输入一个大写英文字母,输出相应的小写字母。
填空1.ch=ch+32;实验项目三顺序结构程序设计题目(1)编写程序,输入三角形的三边长a、b、c,求三角形面积area。
程序代码:#include <stdio.h>#include <mach.h>main(){float a,b,c,s,arer;printf(" 请输入三角形的三个边a,b,c:\n");scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("三角形的边为a=%7.2f, b=57.2f, c=%7.2f\n",a,b,c);printf("三角形的面积area=%7.2\n ",area);(2)设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
C语言实验报告数组

实验七数组1.实验目的(1)熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2)熟练掌握字符数组和字符串函数的使用;(3)掌握与数组有关的常用算法如查找、排序等..2.实验指导(1)对任意一个一维型数组;从中找出数组元素的最大值和最小值并输出..要求:①数组有十个元素;②使用scanf函数实现数组元素的输入前给出必要的提示;③输出时;首先输出数组的十个元素;然后输出其最大值和最小值..分析指导:①算法分析:首先定义一个数组;通过循环从键盘输入十个数组元素的值;再通过另一个循环判断数组元素的最大只和最小值;②根据分析情况编写程序:include<stdio.h>mainint a10;i;max;min;printf"please input ten integers:";fori=0;i<=9;i++{scanf"%d";&ai;}max=a0;min=a0;fori=1;i<=9;i++{ifai>maxmax=ai;ifai<minmin=ai;}fori=0;i<=9;i++{printf"a%d=%d\n";i;ai;}printf"The maximum value is %d;and the minimum value is %d\n";max;min;运行程序;输入十个整数;如:21 37 6 17 9 12 89 76 35 59运行结果如下:(2)编写函数cmpStrchar s1;char s2比较两个字符串s1和 s2的大小..如果s1>s2;返回一个正数;s1=s2;返回0;s1<s2;返回一个负数;在主函数中调用该函数完成字符串的比较操作;并输出返回的值..要求:①不允许使用strcmp函数;②用gets函数在主函数中输入两个字符串;③实现触摸屏受托人函数;返回的正数或负数的绝对值应该是进行比较的两个字符传中相应字符的ASCII码的差值..分析指导:①算法分析:两个字符串从第一个字符开始一一对应进行比较;直到不相等的那个字符;从而求得它们的ASCII码的差值..比如;‘A’与‘C’相比;由于‘A’<‘C’;应输出负数;由于‘A’与‘C’的ASCII码的差值为2;因此;应输出“-2”..同理;“And”和“Aid”比较;根据第二个字符比较结果;‘n’比‘I’大5;因此应输出‘5’;②根据分析情况编写程序:include<stdio.h>int cmpstrchar s1;char s2{int i;diff;i=0;whiles1i==s2i&&s1i='\0'i++;ifs1i=='\0'&&s2i=='\0'diff=0;elsediff=s1i-s2i;return diff;}void main{int z;char s1100;s2100;printf"input the first string:";//输入字符串1gets s1;printf"input the second string:";//输入字符串2getss2;z=cmpstrs1;s2;//输出比较结果printf"the difference between two strings is %d\n";z;}查看运行结果如下:重新输入两个字符串meet;mood运行结果如下:(3)再给定的字符串中查找指定的字符..要求:①字符串采用直接初始化的方式处理;②通过scanf函数读入一个任意字符;③在字符串中查找该字符;如果存在该字符;输出该字符在字符串中的一次出现的位置;如果再给定的字符串中不存在该字符;则给出相应的说明信息..include<stdio.h>void main{int i;char ch;char s=" program";printf" 输入一个英文字母: ";scanf"%c";&ch;for i=0;si='\0';i++{if si==chbreak;}if i<7printf"s%d=%c\n";i;ch;elseprintf"No founded\n";}输入一个英文字母O运行程序如下:再次输入一个英文字母w运行程序如下:(4)首先输入一个大于二且小于十的整数n;然后定义一个二维整型数组nn;初始化该数组;讲述组中最大元素所在的行和最小元素所在的行对调..要求:①nn数组元素的值由scanf函数从键盘输入假定最大值最小值不在同一行上;然后输出该数组;②查找最大值最小值所在的行;将数组中最大元素所在的行和最小元素所在的行对调;并输出对调后的数组;③为直观起见;数组按n行n列的方式输出;④修改程序;对最大值与最小值可能出现在一行种的情况进行处理.. include<stdio.h>main{long matrix99;min;max;temp;int i;j;n;nMax=0;nMin=0;printf"\nplease inpute n of matrix:\n";scanf"%d";&n;printf"\nplease inpute elements of matrix%d%d:\n";n;n; fori=0;i<n;i++forj=0;j<n;j++scanf"%ld";&matrixij;min=max=matrix00;fori=0;i<n;i++forj=0;j<n;j++{ifmatrixij>max{max=matrixij;nMax=i;}else ifmatrixij<min{min=matrixij;nMin=j;}}forj=0;j<n;j++{temp=matrixnMaxj;matrixnMaxj=matrixnMinj;matrixnMinj=temp;}printf"\nResult matrix:\n";fori=0;i<n;i++{forj=0;j<n;j++printf"%5ld";matrixij;printf"\n";}}输入一个数4;输入一个44的数组1 3 6 72 4 5 81 3 5 72 6 9 7运行程序如下:再次输入一个数字3;输入一个33的数组1 2 32 4 537 8运行程序如下:3 实验结论通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用;还有就是掌握与数组有关的常用算法。
C语言上机实验1-18

实验一C程序的运行环境及简单程序编写一、实验目的1.了解tc2.0编译系统的基本操作方法,学会独立使用该系统。
2.了解在该系统上如何编辑、编译、连接和运行一个C程序。
3.通过运行简单的C程序,初步了解C源程序的特点。
二、实验内容1.编写一个计算球体体积的程序,要求用户自行录入球体的半径。
参考公式V=4/3πr3.。
2.编写一个程序,要求用户输入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款。
运行结果:Ener a dollar amount:93$20 bills:4$10 bills:1$5 bills:0$1 bills:3实验二顺序结构程序设计一、实验目的1.熟悉C语言中的基本数据类型,掌握定义常量和变量以及对它们赋值的方法,了解数据输出时所用格式转换符。
2.掌握格式输入/输出函数的用法。
3.学会简单顺序程序的设计。
4.养成良好的程序设计习惯。
二、实验内容1.编写一个程序,对用户录入的产品信息进行格式化。
Enter item number:583Enter unit price:13.5Enter purchase date(mm/dd/yyyy):3/24/2010Item Unit PurchasePrice date583 $ 13.50 3/24/20102.编写一个程序,要求用户输入一个两位数,然后按数位的逆序打印出这个数。
Enter a two-digit number:28The reversal is :82实验三选择结构程序设计一、实验目的1.熟练使用if、switch编写程序。
二、实验内容1.编写一个程序,确定一个数的位数。
Enter a number:374The number 374 has 3 digits假设输入的数最多不超过4位。
提示:利用if语句进行数的判定。
例如,如果数在0到9之间,那么位数为1;如果数在10到99之间,那么位数为2。
C语言上机实验试题

实验一初识Visual C++6.0环境及运行C实例作业:一.选择题1.若int a, b; scanf("%d%d", &a, &b); 不可以用( A )作为输入的分隔符。
A), B)空格 C)回车 D)TAB键2.阅读以下程序,当输入数据的形式是:25,13,10<CR>,正确的输出结果是( D )。
main(){int x,y,z;scanf("%d%d%d",&x,&y,&z);printf("x+y+z=%d",x+y+z);}A)x+y+z=48 B)x+y+z=35 C)x+z=35 D)不确定值3.已知ch是字符型变量,下边正确的赋值语句是( B )A) ch='123'; B)ch='\xff'; C)ch='\08'; D) ch="\";二.填空题1. 以下程序的输出结果是(a= +1124,a=1124 ,x=30.141500,x= 30.142)main(){int a=1124;double x=30.1415;printf("a=%+6d,a=%-6d,x=%f,x=%7.3f",a,a,x,x);}2.以下程序的输出结果是( 36.750000 ) main(){int x=10;float y=26.75;printf("%f",x+y);}实验二 C程序的调试及运算符作业:1.指出下面的是标识符、关键字还是常量。
abc,2,new,struct,″opiu″ ,′k′, ″k″,false ,bnm,true,0xad,045,if ,goto解: abc是标识符,2是整型常量,new、struct是关键字,″opiu″是字符串常量,′k′是字符常量,″k″ 是字符串常量,false是布尔常量,bnm 是标识符,true是布尔常量,0xad是十六进制的整型常量,045是八进制的整型常量,if、goto都是关键字。
C语言实验报告

中南民族大学管理学院学生实验报告课程名称:C程序语言设计姓名:郭晋学号:10056006年级:2010专业:信息管理与信息系统指导教师:李超锋实验地点:管理学院综合实验室2010 学年至20 11 学年度第2 学期目录实验一熟悉C语言的开发环境和C程序的上机步骤实验二基本数据类型及数据的输入输出实验三运算符及表达式实验四顺序结构程序设计实验五选择结构程序设计实验六循环结构程序设计实验七数组及其应用实验八函数及其应用实验九指针及其应用实验(一)熟悉C语言的开发环境和C程序的上机步骤实验时间:2011.3.29同组人员:郭晋,金亚男实验目的:1,了解T urb C3.0编译系统,熟悉各菜单的功能,掌握在该系统上编辑,编译,连接,运行一个C程序的方法。
2,通过调试,运行简单的C程序,初步了解C语言程序的特点。
实验内容:1.编写一个C程序,求一个圆的面积。
我们的程序设计#include<stdio.h>void main(){float r,s;scanf("%f",&r);s=3.14*r*r;printf("s=%f",s);}2.编写程序求任意三个书的最大值。
我们的程序设计#include<stdio.h>void main(){int a,b,c,max;scanf("%d,%d,%d" ,&a,&b,&c);if(a>b&&a>c)max=a;if(b>a&&b>c)max=b;if(c>a&&c>b)max=c;printf("max=%d\n",max);}实验步骤:1.首先,我们两人先根据题目中的编程要求确定实验步骤,分别写下相应的编程语言进行比较,未出现明显的分歧。
2.打开Turb C 程序,然后将刚刚确定的C语言程序输入,打开Proiles,进行系统纠错,看是否出现错误或者警告,进行相应的调试。
实验七 二维数组实验报告

***软件类实验报告课程名称:C语言程序设计学号:姓名:班级:指导教师:开课学期:学院:***教务处⑶二维数组处理矩阵问题。
四、实验过程及内容:(运行结果请抓图到对应题目的下方)1.输入下面的程序,说明程序的功能并分析运行结果。
2.程序填空题。
加法口诀表。
输入1个正整数n(1≤n≤10),输出一张10以内的加法口诀表。
加数与被加数都不大于n(将加数、被加数、和放入一个二维数组中,再输出该数组),程序运行结果如图7-1所示。
填空完成程序。
实验结果:3. 程序填空题。
下列程序定义了M×N的二维数组,并在主函数中对其赋值。
函数fun()的功能是计算数组周边元素的平均值并作为函数值返回给主函数。
实验结果:4. 编程insert函数,insert函数的功能是:实现在字符串s的指定的下标位置插入另一个字符串t。
例如:字符串s为“I am a boy.”,t为“good ”,调用insert(s,7,t);则s结果为“I am a good boy.”。
主函数框架如下:#include "stdio.h"#include "string.h"void main(){char s[100]="I am a boy.",t[50]="good ";void insert(char s[],int n,char t[]);insert(s,7,t);puts(s);}请完成insert函数的定义。
实验结果:5. 程序改错题。
打印九九乘法表。
6.编写程序实现,求3*3矩阵两条对角线元素之和五、实验小结。
C语言程序设计教程上机实验--学生版(精品)

实验一上机操作初步一、实验内容:说明:前三题为必做题目,后两题为选做题目。
1、输出入下信息:(实验指导书P79)*************************Very Good*************************2、计算两个整数的和与积。
(实验指导书P81)3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。
(书P3)4、在屏幕上显示一个文字菜单模样的图案:=================================1 输入数据2 修改数据3 查询数据4 打印数据=================================5、从键盘上输入两个整数,交换这两个整数。
二、参考答案:1、#include <stdio.h>void main( ){ printf(“********************\n”);printf(“ Very Good\n”);printf(“********************\n”);}2、#include <stdio.h>void main( ){ int a,b,c,d;printf(“Please enter a,b:”);scanf(“%d,%d”,&a,&b);c=a+b;d=a*b;printf(“%d+%d=%d\n”,a,b,c);printf(“%d*%d=%d\n”,a,b,d);}3、#include <stdio.h>#include <math.h>void main( ){ double x,s;printf(“Please input value of x:”);scanf(“%lf”,&x);s=cos(x);printf(“cos(%lf)=%lf\n”,x,s);}4、#include <stdio.h>void main( ){ printf(“==================================\n”);printf(“ 1 输入数据 2 修改数据\n”);printf(“ 3 查询数据 4 打印数据\n”);printf(“===================================\n”);}5、#include <stdio.h>void main( ){ int x,y,t;printf(“Please enter x and y:”);scanf(“%d%d”,&x,&y);t=x; x=y; y=t;printf(“After swap:x=%d,y=%d\n”,x,y);}实验二简单的C程序设计一、实验内容:说明:前四题为必做题目,后两题为选做题目。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0; i<n; i++) printf("%d ", a[i]);
printf("\n"); } }
7.4 交换最小值和最大值
程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n (1<n<=10),再输入 n 个整数,将最小值与第一个数交换,最大值与最后 一个数交换,然后输出交换后的 n 个数。 例:括号内是说明 输入 3 (repeat=3) 543512 41567 554321 输出 13245 1567 14325
3 (repeat=3)
3164
3 10 8 1
512540 输出
max=6,index=1 max=10,index=0 max=5,index=2
(最大值 6 的下标是 1) (最大值 10 的下标是 0) (最大值 5 的下标是 2)
#include <stdio.h> int main( ) {
#include <stdio.h> int main( ) {
int ri, repeat; int i, index, n, t; int a[10];
scanf("%d", &repeat); for(ri=1; ri<=repeat; ri++){
scanf("%d", &n); for(i=0; i<n; i++)
实验七 数组
7.1 求平均值
程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n (1<n<=10),再输入 n 个整数,输出平均值(保留 2 位小数)。 例:括号内是说明 输入 2 (repeat=2) 3 1 2 -6 5 12 2 5 4 0 输出 aver=-1.00 aver=4.60
#include <stdio.h> int main( ) {
int ri, repeat; int i, n, temp; int a[10];
scanf("%d", &repeat); for(ri=1; ri<=repeat; ri++){
scanf("%d", &n); for(i=0; i<n; i++)
#include <stdio.h> int main( ) {
int ri, repeat; int i, n, sum; float aver; int a[10];
scanf("%d", &repeat); for(ri=1; ri<=repeat; ri++){
scanf("%d", &n); for(i=0; i<n; i++)
scanf("%d", &a[i]); /*---------*/
printf("aver=%.2f\n", aver); } }
7.2 求最大值及其下标
程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n (1<n<=10),再输入 n 个整数,输出最大值极其下标(设最大值惟一,下 标从 0 开始)。 例:括号内是说明 输入
for( i=0; i<=n; i++ ){ for( j=0; j<=n; j++ ) if(i==0&&j==0) printf( "%-4c", '+'); else if(i==0||j<=i) printf( "%-4d", a[i][j]); printf("\n");
} } }
7.8 判断上三角矩阵
} }
scanf("%d", &a[i]); /*---------*/
for(i=0; i<n; i++) printf("%d ", a[i]);
printf("\n"); } }
7.5 排序
程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n (1<n<=10),再输入 n 个整数,将它们从大到小排序后输出。。 例:括号内是说明 输入 3 (repeat=3) 45176 3123 554321 输出 7651 321 54321
1
(repeat=1)
3
(n=3)
输出:
+123
12
234
3456
#include "stdio.h" int main( ) { int ri,repeat;
int i,j,n,a[10][10]; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){
scanf("%d",&n); /*---------*/
程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入 1 个正整数 n (1≤n≤6)和 n 阶方阵 a 中的元素,如果 a 是上三角矩阵, 输出"YES", 否 则, 输出"NO"。(上三角矩阵,即主对角线以下的元素都为 0, 主对角线为从矩阵的左上角至 右下角的连线) 例:括号内是说明
for(j=0;j<n;j++) scanf("%d",&a[i][j]);
/*---------*/ printf("sum=%d\n",sum);
} }
7.7 加法口诀表
程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入 1 个正整数 n(1≤n≤10), 输出一张 20 以内的加法口诀表. 加数与被加数都不大于 n, 分列第一行和第一列.(将加数、被加数、和放入一个二维数组中, 再输出该数组) 例:括号内是说明 输入:
scanf("%d",&n); for(i=0; i<n; i++)
for(j=0; j<n; j++) scanf("%d",&a[i][j]);
/*---------*/ if(flag) printf("a[%d][%d]=%d\n", row, col,a[row][col]); else printf("NO\n");
scanf("%d", &a[i]); /*---------*/
for(i=0; i<n; i++) printf("%d ", a[i]);
printf("\n"); } }
7.6 矩阵运算
程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 读入 1 个正整数 n(1≤n≤6), 再读入 n 阶方阵 a , 计算该矩阵除副对角线、最后一列和 最后一行以外的所有元素之和.(副对角线为从矩阵的右上角至左下角的连线) 例:括号内是说明 输入: 1 (repeat=1) 4 (n=4) 2341 5611 7181 1111 sum=35 (2+3+4+5+6+7+8=35)
输入:
2
(repeat=2)
3 1 2 3 0 4 5 0 0 6 (n=3)
2 1 0 -8 2 (n=2lude "stdio.h" #include "math.h" int main( ) { int ri,repeat;
int a[6][6],flag,i,j,n; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){
7.10 找鞍点(选作)
程序填空,不要改变与输入输出有关的语句。 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入 1 个正整数 n(1≤n≤6)和 n 阶方阵 a 中的元素,如果找到 a 的鞍点(鞍点的元素值 在该行上最大, 在该列上最小), 就输出它的下标, 否则,输出"NO"(设 a 最多有 1 个鞍点)。 例:括号内是说明 输入:
#include "stdio.h" int main( ) { int ri,repeat;
int a[6][6],i,j,n,sum; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){