程序设计实训8月16日小组编程
今日碎碎念:今天稀里糊涂地在规定时间内倒是都做出来了,但是还有些问题没有想明白再回顾一下。(大佬都在自己的博客上写学习笔记,我只能用用优快云了唔)
7-1 点赞
微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。
输入格式:
输入在第一行给出一个正整数N(≤1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“K F1 ⋯FK ”,其中1≤K≤10,Fi(i=1,⋯,K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。
输出格式:
统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。
输入样例:
4
3 889 233 2
5 100 3 233 2 73
4 3 73 889 2
2 233 123
输出样例:
233 3
//主要思路:设一个全为零的计数数组,用以记录每个数字出现的次数
#include<stdio.h>
int main()
{
int n,type[1001]={0},max=0,m,i,t,k;
//type设1001个是因为编号是从1~1000,而不是0~999
scanf("%d",&n);
while(n--){
scanf("%d",&m);
while(m--){
scanf("%d",&t);
type[t]++;
}
}
for(i=1;i<=1000;i++){
if(max<type[i]){
max = type[i];
k = i;
}
else if(max == type[i]){
if(i>k){
max = type[i];
k = i;
}
}
}
if(max==1){
if(k>1)
printf("1000 1");
}
//这个if是我在测试数据的时候,有个数据点是如果全不同取到编号边界
else{
printf("%d %d",k,type[k]);
}
return 0;
}
7-2 打印杨辉三角
本题要求按照规定格式打印前N行杨辉三角。
输入格式:
输入在一行中给出N(1≤N≤10)。
输出格式:
以正三角形的格式输出前N行杨辉三角。每个数字占固定4位。
输入样例:
6
输出样例:
ssn:在我印象中这是杨辉三角是很经典的题,我当时就直接去自己的文章管理想贴过去,结果我发现我竟然我竟然,没写过杨辉三角。
#include <stdio.h>
int main()
{
int i,j,n,temp,a[10][10];
scanf("%d",&n);
for (i=0; i<n; i++){
a[i][0] = 1;
a[i][i] = 1;
}//把两边设上1
for(i=2; i<n; i++){
for (j=1; j<i; j++)
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
for(i=0; i<n; i++){
//我觉得这题难度就在于把握输出多少个空格把握那个形状
for (temp=1; temp<=n-1-i; temp++)
printf(" ");
for(j=0; j<=i; j++)
printf("%4d", a[i][j]);
printf("\n");
}
return 0;
}
7-6 吃火锅
以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。
本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1。
输入格式:
输入每行给出一句不超过 80 个字符的、以回车结尾的朋友信息,信息为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。当读到某一行只有一个英文句点 . 时,输入结束,此行不算在朋友信息里。
输出格式:
首先在一行中输出朋友信息的总条数。然后对朋友的每一行信息,检查其中是否包含 chi1 huo3 guo1,并且统计这样厉害的信息有多少条。在第二行中首先输出第一次出现 chi1 huo3 guo1 的信息是第几条(从 1 开始计数),然后输出这类信息的总条数,其间以一个空格分隔。题目保证输出的所有数字不超过 100。
如果朋友从头到尾都没提 chi1 huo3 guo1 这个关键词,则在第二行输出一个表情 -_-#。
输入样例 1:
Hello!
are you there?
wantta chi1 huo3 guo1?
that’s so li hai le
our story begins from chi1 huo3 guo1 le
.
输出样例 1:
5
3 2
输入样例 2:
Hello!
are you there?
wantta qi huo3 guo1 chi1huo3guo1?
that’s so li hai le
our story begins from ci1 huo4 guo2 le
.
输出样例 2:
5
-_-#
ssn:借鉴别人写的,学到了strstr这个函数。
#include<stdio.h>
#include<string.h>
struct huoguo{
char str[201];
int c;
}T[200];
int main()
{
int i,n=0,flag=0;
for(i=0;;i++,n++){
gets(T[i].str);
if(!strcmp(T[i].str,".")) break;
T[i].c = 0;
}
for(i=0;i<n;i++){
if(strstr(T[i].str ,"chi1 huo3 guo1")){
flag++;
T[i].c = 1;
}
}
printf("%d\n",n);
if(!flag){
printf("-_-#");
}
else{
for(i=0;i<n;i++){
if(T[i].c ==1){
printf("%d ",i+1);
break;
}
}
printf("%d",flag);
}
return 0;
}