c语言实验报告
美大学计算机工程学院实验报告
课程名称:高级语言程序设计 |
班级:网络1713 |
实验成绩: |
指导教师:贺冰琰 |
姓名:吴秋雨 |
|
实验项目名称: |
学号:201721123087 |
上机实践日期: |
|
|
|
一、目的:’掌握二维数组的定义、赋值、使用和输入输出方法
二、实验内容:
第十一次作业:
11-3 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
#include<stdio.h>
int day_of_year(int year,int month,int day);
int main ()
{
int m,year,month,day;
scanf ("%d/%d/%d",&year,&month,&day);
m=day_of_year(year,month,day);
printf ("%d",m);
return 0;
}
int day_of_year(int year,int month,int day)
{
int k,leap;
int tab[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
leap=(year%4==0&&year%100!=0||year%400==0);
for(k=1;k<month;k++)
day=day+tab[leap][k];
return day;
}第十二次作业:
目的:掌握字符数组和字符串的使用。
12-6 字符串转换成十进制整数(15 分)
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
输入格式:
输入在一行中给出一个以#结束的非空字符串。
输出格式:
在一行中输出转换后的十进制数。题目保证输出在长整型范围内
#include<stdio.h>
int main()
{
char ch[80];
int i,cnt=0,sum=0,h;
for(i=0;(ch[i]=getchar())!='#';i++){
//printf("%c\n",ch[h]);
}
for(h=0;h<=i-1;h++){
if(ch[h]=='x'){
if(ch[h-1]=='-')
cnt++;break;
}
}
for(h=0;h<i;h++){
//printf("%c\n",ch[h]);
if(ch[h]>='A'&&ch[h]<='F'){
sum=sum*16+ch[h]-65+10;
}
if(ch[h]>='a'&&ch[h]<='f'){
sum=sum*16+ch[h]-97+10;
}
if(ch[h]>='0'&&ch[h]<='9'){
sum=sum*16+ch[h]-48;
}
}
if(cnt)printf("%d",-sum);
else printf("%d",sum);
return 0;
}13-5 判断回文字符串(20 分)
本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。
bool palindrome( char *s )
{
int len=strlen(s);
int k=0,i=0,j=len-1;
while(i<j){
if(s[i]!=s[j])
break;
i++;
j--;
}
if(i>=j)
return true;
else
return false;
}
第十四次作业:
目的: 熟悉递归函数的基本思想,掌握数值型与非数值型递归函数的编程问题
14-1 使用函数实现字符串部分复制(20 分)
本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。
void strmcpy( char *t, int m, char *s )
{
int n=0;
while(n<m-1) //当n>=m-1时,循环结束
{
n++;
t++; //让str 字符串从第m个开始
}
while(*t!='\0')
{
*s=*t; //从第一个字符串的第m个元素开始 复制到第二个字符串
t++;
s++;
}
*s='\0';
}
第十五次作业:
目的:掌握结构体变量的定义和使用、掌握结构体数组的定义和使用、了解结构指针的定义和使用
15-1 拆分实数的整数与小数部分(15 分)
本题要求实现一个拆分实数的整数与小数部分的简单函数。
void splitfloat( float x, int *intpart, float *fracpart )
{
int *k;
float *j;
int m;
float n;
m=x;
n=x-m;
k=&m;
j=&n;
*intpart=*k;
*fracpart=*j;
}