判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。
输入格式:
输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表“非”,1 代表“是”。随后 N 行,每行给出一个学生的解答。数字间均以空格分隔。
输出格式:
按照输入的顺序输出每个学生的得分,每个分数占一行。
#include<iostream>
using namespace std;
int main(){
int n,m;
int score[101];
int answer[101];
int a[101];//学生的答案
cin>>n>>m;
for(int i=0;i<m;i++){
cin>>score[i];
}
for(int i=0;i<m;i++){
cin>>answer[i];
}
for(int i=0;i<n;i++){
int result=0;
for(int j=0;j<m;j++){
cin>>a[j];
if(a[j]==answer[j]){
result+=score[j];
}
}
cout<<result<<endl;
}
return 0;
}
线性表插入元素
#include "pch.h"
#include<cstdio>
#include<iostream>
#define MaxSize 50
using namespace std;
typedef struct{
int *elem;
int length;
}SqList;
int ListInsert_Sq(SqList &L, int i, int e) {
if (i<1 || i> L.length+1)
return 1;
if (L.length == MaxSize)
return 1;
//cout << 99;
for (int j = L.length - 1; j >= i - 1; j--) {
L.elem[j + 1] = L.elem[j];
}
L.elem[i-1] = e;
L.length++;
return 0;
}
int GetLength(SqList L) {
return(L.length);
}
int IsEmpty(SqList L) {
if (L.length == 0)
return 1;
else
return 0;
}
int InitList_Sq(SqList &L) {
L.elem = new int[MaxSize];
if (!L.elem)
return 1;
L.length = 0;
return 0;
}
int main() {
int n;
SqList L;
InitList_Sq(L);
printf("请输入长度:");
cin >> n;
L.length = n;
printf("再输入数组元素:");
for (int i = 0; i < n; i++) {
cin >> L.elem[i];
}
ListInsert_Sq(L,2,9);
for (int i = 0; i < L.length; i++) {
cout<< L.elem[i];
}
//cout << L.length;
return 0;
}
C++实现单向链表删除,插入,排序,查找
#include<cstdio>
#include<cstdlib>
using namespace std;
struct node{
int data;
node* next;
};
//创建链表
node* create(int array[]){
node *p, *head, *pre;//pre为前驱结点
head=new node;
head->next=NULL;
pre=head;
for(int i=0; i<5; ++i){
p= new node;
p->data=array[i];
p->next=NULL;
pre->next=p;
pre=p;
}
return head;
}
// 插入
// 将x插入到以head为头节点的pos位置上
void insert(node* head, int pos, int x){
node *p=head;
for(int i=0;i<pos-1;i++){//比如要插到第三个位置,从0开始的话就是下标为2,前一个下标为1
p=p->next;// 1 < 3-1
}
node* q=new node;
q->data=x;
q->next=p->next;
p->next=q;
}
//删除
//删除所有值为x的数
void del(node* head, int x){
node* p= head->next;
node* pre=head;
while(p!=NULL){
if(p->data==x){
pre->next=p->next;
delete(p);
p=pre->next;
}else{
pre=p;
p=p->next;
}
}
}
//查找
//查找链表中有几个x,返回count值
int search(node *head, int x){
int count=0;
node *p=head->next;
while(p!=NULL){
if(p->data==x){
count++;
}
p=p->next;
}
return count;
}
//排序
//冒泡排序
void sort(node *head){
for(node *temp=head->next;temp->next!=NULL;temp=temp->next){
for(node *p=head->next;p->next!=NULL;p=p->next){
if(p->data > p->next->data){
int t=p->data;
p->data=p->next->data;
p->next->data=t;
}
}
}
}
int main(){
int array[5]={6,3,9,1,2};
node* L=create(array); //返回头节点L
//insert(L, 3, 8); //插入后结果为6,3,8,9,1,2
//del(L, 9); //删除后结果为6,3,1,2
/*查找
int y=9;
int x=search(L, y);
printf("查找到%d个%d\n", x, y);
*/
//sort(L); //排序
//遍历打印
L=L->next; //头节点L是没有数据域的,下个结点才有
while(L != NULL){
printf("%d ",L->data);
L=L->next;
}
return 0;
}